如何使用过滤器功能遍历多个Pandas DataFrame?

时间:2019-02-17 17:42:25

标签: python

所以我有多个数据帧正在尝试循环。

我使用以下代码创建了一个列表:

data_list = [df1, df2, df3]

之后,我想在每个数据帧的“ Firm_Code”列中过滤出预定义的数字范围。

到目前为止,我可以针对单个数据框过滤出代码在6000到6999之间的公司,如下所示:

FFirms = range(6000,7000)
Non_FFirms = [b for b in df1['Firm_Code'] if b not in FFirms]
df1 = df1.loc[df1['Firm_Code'].isin(Non_FFirms)] 

现在,我想遍历data_list。我的第一次尝试如下所示:

for i in data_list:
     i = i.loc[i.Firm_Code.isin(Non_FFirms)]

感谢任何建议!

1 个答案:

答案 0 :(得分:0)

您可以将所有数据帧合并为一个数据帧,而无需列出数据帧列表。

data_df = pd.concat([df1,df2,df3],ignore_index=True)

如果您需要标识从哪个数据帧中获取了值,则可以添加一个新列,例如“ Df_number”。

使用data_df,您可以过滤数据

FFirms = range(6000,7000)
Non_FFirms = [b for b in df1['Firm_Code'] if b not in FFirms]
filtered_data_df = data_df.loc[data_df['Firm_Code'].isin(Non_FFirms)]