python - 循环遍历数据框并根据列中的值导出不同的 csv
问题描述
我想遍历这个数据框并根据唯一字符串(BMP_ASR1 和 WATSYRIN)的 parm 列组导出不同的 csv,并从该字符串组(BMP_ASR1 和 WATSYRIN)中命名 csv。
name post_mean post_stdev post_lower_bound post_upper_bound Year parm
0 BMP_ASR1 16.50 21.46260 -26.42530 59.4253 2020 BMP_ASR1
1 BMP_ASR1 36.60 53.48860 -70.37730 143.5770 2030 BMP_ASR1
2 WATSYRIN 10390.20 279.44300 9831.31000 10949.1000 2070 WATSYRIN
3 WATSYRIN 11164.90 293.37900 10578.10000 11751.7000 2080 WATSYRIN
4 WATSYRIN 33630.70 902.58200 31825.50000 35435.8000 2090 WATSYRI
输出将包括所有列,但与 parm 行中的值相同。
BMP_ASR1.csv =
name post_mean post_stdev post_lower_bound post_upper_bound Year parm
0 BMP_ASR1 16.50 21.46260 -26.42530 59.4253 2020 BMP_ASR1
1 BMP_ASR1 36.60 53.48860 -70.37730 143.5770 2030 BMP_ASR1
WATSYRIN.csv =
WATSYRIN
3 WATSYRIN 11164.90 293.37900 10578.10000 11751.7000 2080 WATSYRIN
4 WATSYRIN 33630.70 902.58200 31825.50000 35435.8000 2090 WATSYRI
解决方案
用户 groupby 并循环遍历每个 groupby 对象
lst = ['BMP_ASR1', 'WATSYRIN'] # list of parms to keep
for k,v in df.groupby('parm'): # for key, value in the groupby object
if k in lst: # if the key is in the list
v.to_csv(f'{k}.csv', index=False) # write to csv file
或先过滤并避免使用 if 语句
lst = ['BMP_ASR1', 'WATSYRIN'] # list of parms to keep
filter_df = df[df['parm'].isin(lst)] # boolean indexing to keep certain parms
for k,v in filter_df.groupby('parm'): # for key, value in the groupby object
v.to_csv(f'{k}.csv', index=False) # value to csv
如果要保留 parm 列中的所有唯一组,则
for k,v in df.groupby('parm'):
v.to_csv(f'{k}.csv', index=False)
推荐阅读
- kotlin - 对于 Kotlin 中的 List,asReversed() 本质上是 reversed() 吗?
- r - 如何定期刷新 R-Shiny 应用程序
- excel - 将循环结果拆分为vba中的范围
- reactjs - manifest.json 404(未找到)
- php - 从 SQL 数据库显示信息到谷歌图表
- java - JLayeredPane 破坏布局
- c# - TinyMCE:ASP.NET MVC
- python - 如何识别元组中的相同元素
- alfresco - 如何在 Alfresco 共享中动态禁用控制?
- c# - 在 .Net Framework 中存储和读取 app.config 中的自定义信息