python - 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
谁能帮我解决这个问题?非常感谢。
解决方案
您可以使用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
推荐阅读
- javascript - useRef 还是 DOM api?
- php - 如何通过 user_id Laravel 更改数组结构
- linux - 在sudo下运行时如何从C获取登录用户
- c++ - 如果大小等于特定数字,如何查找字符串向量的单个索引的大小并打印索引?
- ios - 为什么我不能在选择器函数中添加闭包?
- spring-integration - 使用 TransactionInterceptor 抛出 java.lang.IllegalStateException:无法将反应式事务应用于非反应式返回类型:void
- google-cloud-platform - 是否可以在 Google Cloud 平台中隐藏 BigQuery 查询执行日志?
- firebase - Firebase 函数返回未定义的、预期的 Promise 或值,但该函数有效
- android - 如何使用 Firebase SDK 向 Google Analytics 报告在移动应用中进行但离线支付的购买
- reactjs - Web-worker 问题:未捕获的 DOMException:无法在“Worker”上执行“postMessage”