草庐IT

python - bool 值 `loc` 和后续 `iloc` 的 Pandas 索引

我想使用bool掩码为Pandas数据框编制索引,然后根据整数索引在过滤数据框的子集中设置一个值,并将该值反射(reflect)在数据框中。也就是说,如果这适用于数据框的View,我会很高兴。例子:In[293]:df=pd.DataFrame({'a':[0,1,2,3,4,5,6,7],'b':[5,5,2,2,5,5,2,2],'c':[0,0,0,0,0,0,0,0]})mask=(df['a']现在我想设置过滤数据框中返回的前两个元素的值。将iloc链接到上面的loc调用可以索引:In[294]:df.loc[mask,'c'].iloc[0:2]Out[294]:2030N

python - Pandas 数据框 : loc vs query performance

我在python中有2个数据帧,我想查询数据。DF1:4M条记录x3列。查询功能接缝更多比loc函数更高效。DF2:2K条记录x6列。loc函数接缝更多比查询功能更高效。两个查询都返回一条记录。通过在循环中运行相同的操作10K次来完成模拟。运行python2.7和pandas0.16.0有什么提高查询速度的建议吗? 最佳答案 为了提高性能可以使用numexpr:importnumexprnp.random.seed(125)N=40000000df=pd.DataFrame({'A':np.random.randint(10,siz

Python Pandas - 'loc' 和 'where' 之间的区别?

只是对“where”的行为以及为什么要在“loc”上使用它感到好奇。如果我创建一个数据框:df=pd.DataFrame({'ID':[1,2,3,4,5,6,7,8,9,10],'RunDistance':[234,35,77,787,243,5435,775,123,355,123],'Goals':[12,23,56,7,8,0,4,2,1,34],'Gender':['m','m','m','f','f','m','f','m','f','m']})然后应用'where'函数:df2=df.where(df['Goals']>10)我得到以下过滤掉目标>10的结果,但将其他所有

python - 使用 loc 时 Pandas SettingWithCopyWarning

这个问题在这里已经有了答案:HowtodealwithSettingWithCopyWarninginPandas(20个答案)关闭2年前。有一个关于使用.loc进行索引/切片分配的一般性问题。假设下面的DataFrame,df:df:ABC0ab1ab2ba3cc4ca重现代码:df=pd.DataFrame({'A':list('aabcc'),'B':list('bbaca'),'C':5*[None]})我使用以下方法创建df1:df1=df.loc[df.A=='c']df1:ABC3cc4ca然后我根据B中的值为C分配一个值,使用:df1.loc[df1.B=='a','C

python - pandas df.loc[z,x]=y 如何提高速度?

我已经确定了一个pandas命令timeseries.loc[z,x]=y负责一次迭代中花费的大部分时间。现在我正在寻找更好的方法来加速它。循环甚至不包括50k个元素(生产目标是~250k或更多),但已经需要20秒了。这是我的代码(忽略上半部分,它只是计时助手)defpopulateTimeseriesTable(df,observable,timeseries):"""Gothroughallrowsofdfandputtheobservableintothetimeseriesatcorrectrow(symbol),column(tsMean)."""print"len(df.i

python - 将列表插入单元格 - 为什么 loc 实际上在这里工作?

我们知道设置单个单元格的标准方法是使用at或iat。但是,我注意到一些有趣的行为,我想知道是否有人可以合理化。在解决thisquestion,我遇到了loc的一些奇怪行为。#Setup.pd.__version__#'0.24.0rc1'df=pd.DataFrame({'A':[12,23],'B':[['a','b'],['c','d']]})dfAB012[a,b]123[c,d]要设置单元格(1,'B'),只需使用at即可,例如df.at[1,'B']=...。但是对于loc,我最初尝试了这个,但没有用:df.loc[1,'B']=['m','n','o','p']#Value

python - `.loc` 和 `.iloc` 与 MultiIndex'd DataFrame

当索引一个MultiIndex-edDataFrame时,似乎.iloc假定您引用索引的“内部级别”,而.loc查看外部水平。例如:np.random.seed(123)iterables=[['bar','baz','foo','qux'],['one','two']]idx=pd.MultiIndex.from_product(iterables,names=['first','second'])df=pd.DataFrame(np.random.randn(8,4),index=idx)#.loclooksattheouterindex:print(df.loc['qux'])#

python - Pandas 中 dataframe.loc() 的 Numpy 等价性是什么

我有一个120,000*4的numpy数组,如下所示。每一行都是一个样本。第一列是以秒为单位的时间,或者使用Pandas术语的index。0.01414.175-29.97-22.680.02213.905-29.835-22.680.03012.257-29.32-22.67......1259.980-0.4052.2053.8251259.991-0.4952.1153.735我想选择记录在100.000到200.000秒之间的行并将其保存到一个新数组中。如果这是Pandas数据框,我会简单地编写df.loc[100:200]。numpy中的等效操作是什么?这不是可行性问题。我只

python - 为什么你可以在 Pandas 中做 df.loc(False) ['value' ]?

我没有看到任何关于pandas的文档来解释传递给loc的参数False。谁能解释()和[]在这种情况下有何不同? 最佳答案 df.loc是_LocIndexer的实例类,恰好是_NDFrameIndexer的子类类。当你执行df.loc(...)时,它看起来是__call__方法被调用,它无害地返回它自己的另一个实例。例如:In[641]:df.locOut[641]:In[642]:df.loc()()()()()()Out[642]:...等等。(...)中传递的值不会被实例以任何方式使用。另一方面,传递给[...]的属性被发送

python - "Too many indexers"与 DataFrame.loc

我已阅读thedocsaboutslicers一百万次,但我从来没有想过它,所以我仍在试图弄清楚如何使用loc将DataFrame与MultiIndex.我将从thisSOanswer中的DataFrame开始:valuefirstsecondthirdfourthA0B0C1D02D13C2D06D17B1C1D010D111C2D014D115A1B0C1D018D119C2D022D123B1C1D026D127C2D030D131A2B0C1D034D135C2D038D139B1C1D042D143C2D046D147A3B0C1D050D151C2D054D155B1C1D