【发布时间】:2015-01-29 17:08:49
【问题描述】:
我拥有的是熊猫数据框中的数据。有一列包含 customer_id。这些不是唯一的 ID。我有一个选定客户 ID 的列表(列表中没有重复值)。我想要做的是根据列表中的 id 创建一个新的数据框。我想要列表中每个 id 的所有行。所有数据都以str的形式读入。
这是我的代码:
for i in range(len(df_ALL)):
if df_ALL.loc[i,"Customer_ID"] in ID_list:
df_Sub = df_Sub.append(df_ALL.iloc[i,:])
当我在简单的小文件上运行它时,它会运行。但是,当我在真实数据上运行它时,它返回一个“KeyError:'标签 [2666] 不在 [index]'”我只使用 python/pandas 大约 4-5 个月,我试图研究解决这个问题,但我找不到我理解的东西。如果有更好的方法来实现我的目标,我愿意学习。
提前谢谢你。
【问题讨论】:
-
您能否发布可重现您的错误的示例数据和代码,听起来您正在尝试为列表中的所有客户创建一个新的 df 是否正确?
df[df['Customer_ID'].isin(ID_list)]怎么样?我相信应该可以工作 -
@EdChum 你是对的!这正是我想做的。我按照你的建议使用了
isin,它奏效了。
标签: python pandas merge filtering dataframe