首页 > 解决方案 > Python - 如何编写一个循环来根据另一个列表的元素 python 为列表中的每个 df 添加一列

问题描述

我有一个数据框列表,我想为该列表中的每个 df 添加一个名为“new_index”的新列。'new_index' 基于另一个列表。

lst_dfs = [(pd.DataFrame({'country':['a','b','c','d'],
  'gdp':[1,2,3,4],
  'iso':['x','y','z','w']})),
  (pd.DataFrame({'country':['aa','bb','cc','dd'],
  'gdp':[11,22,33,44],
  'iso':['xx','yy','zz','ww']})),
  (pd.DataFrame({'country':['aaa','bbb','ccc','ddd'],
  'gdp':[111,222,333,444],
  'iso':['xxx','yyy','zzz','www']}))

lst_index = ['index1','index2','index3']

print(lst_dfs[0])
>>>
country gdp iso
0   a   1   x
1   b   2   y
2   c   3   z
3   d   4   w

预期产出:

country gdp iso new_index
0   a   1   x   index1
1   b   2   y   index1
2   c   3   z   index1
3   d   4   w   index1


country gdp iso new_index
0   aa  11  xx  index2
1   bb  22  yy  index2
2   cc  33  zz  index2
3   dd  44  ww  index2

country gdp iso new_index
0   aaa 111 xxx index3
1   bbb 222 yyy index3
2   ccc 333 zzz index3
3   ddd 444 www index3

谁能帮我解决这个问题?非常感谢。

标签: pythonpandaslistdataframe

解决方案


您可以使用zip

for df, idx in zip(lst_dfs, lst_index): df['new_index'] = idx

print(lst_dfs[1])

输出:

  country  gdp iso new_index
0      aa   11  xx    index2
1      bb   22  yy    index2
2      cc   33  zz    index2
3      dd   44  ww    index2

推荐阅读