循环遍历数据框架,并根据列中的值导出不同的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)

最新更新