Python 传递列表喜欢。不再支持带有任何缺少标签的loc或[]
我想用指定的列创建一个修改过的数据框。 我尝试了以下操作,但抛出错误“不再支持传递列表likes to.loc或[]以及任何缺少的标签”Python 传递列表喜欢。不再支持带有任何缺少标签的loc或[],python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我想用指定的列创建一个修改过的数据框。 我尝试了以下操作,但抛出错误“不再支持传递列表likes to.loc或[]以及任何缺少的标签” 谢谢列表中的某些列未包含在数据框中,如果您确实希望这样做,让我们尝试reindex tips_filtered = tips_df.reindex(columns=filtered_columns) 实际上,我也遇到了这个错误,上面的黑客修复了它,但我不明白为什么。。。我在我的个人电脑上尝试了一个类似的调用,而不是在我正在使用的笔记本的内核上,使用.loc[
谢谢列表中的某些列未包含在数据框中,如果您确实希望这样做,让我们尝试
reindex
tips_filtered = tips_df.reindex(columns=filtered_columns)
实际上,我也遇到了这个错误,上面的黑客修复了它,但我不明白为什么。。。我在我的个人电脑上尝试了一个类似的调用,而不是在我正在使用的笔记本的内核上,使用.loc[]和列表格式的列名子集就可以了。我知道这不是问题的答案,但我对堆栈溢出还不熟悉,还不能发表评论,但希望澄清抛出此错误的原因?看起来Pandas不赞成这种索引方法。根据他们的意见: 此行为已弃用,并将显示一条警告消息 到这一节。推荐的替代方法是使用.reindex() 使用新的,您可以使用以下方法筛选列:
tips\u filtered=tips\u df.reindex(columns=filtered\u columns)
注意:要重新索引行,可以使用
重新索引(index=…)
(详细信息)。我遇到了相同的错误,缺少行索引标签而不是列例如,我将有一个具有以下ID的产品数据集:['a'、'b'、'c'、'd']。我将这些产品存储在一个带有索引的数据框中
['a'、'b'、'c'、'd']
:
df=pd.DataFrame(['product a','product b','product c', 'product d'],index=['a','b','c','d'])
现在假设我有一个更新的产品索引:
行索引=['b'、'c'、'd'、'e']
其中“e”对应于一个新产品:“产品e”。请注意,“e”在我的原始索引中不存在
如果我试图将此更新的索引传递给我的df数据帧:df.loc[row_index,:]
我将收到这个令人讨厌的错误消息:
KeyError:“不再支持将列表像.loc或[]传递给任何缺少的标签。缺少以下标签:索引(['e'],dtype='object')
为避免此错误,我需要将更新的索引与原始索引相交:
df.loc[df.index.intersection(row_indices),:]
它成功了。所有的列都在数据框中。但是,为什么它会抛出这个错误?@swasthiknayak让我们做,
设置(过滤的列)。差异(设置(df.columns.tolist())
,然后检查其余的;t检查df.columns
中是否有拼写错误或前导/尾随空格,如果需要,您可以str.strip()
将其关闭。某些/任何列不在实际数据框架中。这不是问题的答案,应该在注释中。请删除它。您可以在50信誉度下进行注释。用户显然由于信誉度原因无法进行注释…我建议改为打开一个新问题,但这可能是错误的关闭为重复…我今天遇到了这个问题,你救了我的命。非常感谢@KuffnerThank-我需要一种快速方法来重新编制股票价格数据的指数,以便在非市场日有固定价格(只需使用固定价格和日期范围重新编制指数,没有问题),但我还需要指出哪些是市场日-我保存了我的原始索引,然后使用.loc,将原始索引设置为MarketDay=True-所有正常方法都不起作用-此方法是唯一起作用的方法。因此,我感谢您。
df.loc[df.index.intersection(row_indices),:]