是否仅包括包含列表中指定名称的行?

2024-06-10 11:12:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,它有多个列,按AccountAlias排序,我的意思是第一列称为“AccountAlias”

^{tb1}$

这基本上就是我的数据帧的样子。现在,我想加载一个csv文件,它只是一个列,上面有名称,然后我想将该csv文件加载到我的工作中。然后我想过滤掉csv文件中没有的所有客户端及其信息

最终结果应该是这样的

^{tb2}$

我尝试下载csv文件并转换为列表,然后使用

df=df[mylist]

但这是在尝试只包括列表中包含值的列,而列表中没有值,因为这些值包含在我的行中


Tags: 文件csv数据名称信息客户端dataframedf
2条回答

当您在访问列AccountAlias时得到KeyError: 'AccountAlias',您的AccountAlias可能实际上在行索引中,而不是在数据列中,如下所示:

                 Stock_1    Stock_2
AccountAlias                       
Client Name 1  costbasis  costbasis
Client Name 2  costbasis  costbasis

请注意,标签AccountAlias位于比包含列标签Stock_1Stock_2的行低的行。这是行索引标签的设置

在这种情况下,如果要对列表中的行进行筛选mylist,可以使用:

df_out = df.loc[df.index.isin(mylist)]

演示

输入

mylist = ['Client Name 1']

# before filtering
print(df)


                 Stock_1    Stock_2
AccountAlias                       
Client Name 1  costbasis  costbasis
Client Name 2  costbasis  costbasis

输出

df_out = df.loc[df.index.isin(mylist)]

print(df_out)


                 Stock_1    Stock_2
AccountAlias                       
Client Name 1  costbasis  costbasis

您可以使用.isin

df = df[df.loc[:, 'AccountAlias'].isin(mylist)]

相关问题 更多 >