我有一个熊猫数据框列表。我想过滤for循环中每个数据帧的列。
import pandas as pd
df_list=[]
sales = [('Jones LLC', 150, 200, 50),
('Alpha Co', 200, 210, 90),
('Blue Inc', 140, 215, 95)]
labels = ['account', 'Jan', 'Feb', 'Mar']
df_list.append(pd.DataFrame.from_records(sales, columns=labels))
sales = [('Jones LLC', 122, 566, 345),
('Alpha Co', 200, 210, 652),
('Blue Inc', 140, 215, 788)]
labels = ['account', 'Jan', 'Feb', 'Mar']
df_list.append(pd.DataFrame.from_records(sales, columns=labels))
col_list = [col for col in df_list[0].columns if col.startswith('acc') or col.startswith('mar')]
#this works
df_list[0]=df_list[0][col_list]
print(df_list[0])
#this does not work
for frame in df_list:
frame = frame[col_list]
print(df_list[1])
为什么for循环不起作用?
答案 0 :(得分:0)
因为您的循环实际上并没有在df_list
中重新分配任何内容,所以它只是循环进行。您可以这样做:
for i, frame in enumerate(df_list):
df_list[i] = frame[col_list]
哪个作品:
>>> df_list[0]
account
0 Jones LLC
1 Alpha Co
2 Blue Inc
>>> df_list[1]
account
0 Jones LLC
1 Alpha Co
2 Blue Inc