我想循环遍历这个数据框,并根据唯一字符串(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)