草庐IT

python - pandas:使用 loc 迭代 DataFrame 索引

我似乎找不到.loc行为背后的原因。我知道它是基于标签的,所以如果我遍历Index对象,下面的最小示例应该可以工作。但事实并非如此。我当然用谷歌搜索了,但我需要已经掌握索引的人的额外解释。importdatetimeimportpandasaspddict_weekday={1:'MON',2:'TUE',3:'WED',4:'THU',5:'FRI',6:'SAT',7:'SUN'}df=pd.DataFrame(pd.date_range(datetime.date(2014,1,1),datetime.date(2014,1,15),freq='D'),columns=['Dat

python - dtype : integer, 但 loc 返回 float

我有一个奇怪的数据集:yearfirmsagesurvival019775649180NaN219785039910NaN3197841313010.731310519794978050NaN6197939035210.774522我将前三列的dtype转换为整数:>>>df.dtypesyearint64firmsint64ageint64survivalfloat64但现在我想根据这里的索引在另一个表中搜索:idx=331otherDf.loc[df.loc[idx,'age']]Traceback(mostrecentcalllast):(...)KeyError:8.0这来自d

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中的等效操作是什么?这不是可行性问题。我只