【问题标题】:loop through dataframe and export different csvs based on values in column循环遍历数据框并根据列中的值导出不同的 csv
【发布时间】:2021-10-01 20:37:57
【问题描述】:

我想遍历这个数据帧并根据唯一字符串的 parm 列组(BMP_ASR1 和 WATSYRIN)导出不同的 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

【问题讨论】:

    标签: python dataframe loops group-by export-to-csv


    【解决方案1】:

    用户 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      相关资源
      最近更新 更多