更新熊猫数据框列表中的列

时间:2018-09-08 16:28:45

标签: python-3.x pandas list

我有一个熊猫数据框列表。我想过滤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循环不起作用?

1 个答案:

答案 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