【问题标题】:Split CSV by unique columns按唯一列拆分 CSV
【发布时间】:2020-01-15 22:35:21
【问题描述】:

我在尝试将我的 CSV 拆分为 CSV 文件的最小值时遇到了问题,因此每个文件中只有唯一的 ID

通过运行

count = df['id'].value_counts().max()

我已经知道我应该创建的 csv 文件的数量(file1、file2、file3、file4)

我的预期输出应该是

文件1

 person_name     id    Total  Paid        Date          No
      Deniss  55227  1191,75  0,00  21/08/2019  15/06/2018
      RINALDS  56002   169,00  0,00  21/08/2019  15/06/2018
      OLGA  54689   812,90  0,00  21/08/2019  15/05/2018

文件2

person_name     id    Total  Paid        Date          No
Deniss  55227  1191,75  0,00  21/08/2019    20180615
RINALDS  56002   169,00  0,00  21/08/2019    20180615
OLGA  54689   812,90  0,00  21/08/2019    20180515

文件3

person_name     id    Total  Paid        Date          No
Deniss  55227  1191,75  0,00  21/08/2019    20180613
RINALDS  56002   169,00  0,00  21/08/2019    20180614

文件4

person_name     id    Total  Paid        Date          No
Deniss  55227  1191,75  0,00  21/08/2019    20180612


【问题讨论】:

    标签: python pandas numpy csv pandas-groupby


    【解决方案1】:

    使用GroupBy.cumcount作为计数器系列,然后循环写入文件:

    g = df.groupby('id').cumcount() + 1
    
    for i, df in df.groupby(g):
        df.to_csv(f'file{i}.csv', index=False)
    

    用样本数据测试:

    for i, df in df.groupby(g):
        print (df)
    
          person_name     id    Total  Paid        Date          No
        0      Deniss  55227  1191,75  0,00  21/08/2019  15/06/2018
        4     RINALDS  56002   169,00  0,00  21/08/2019  15/06/2018
        7        OLGA  54689   812,90  0,00  21/08/2019  15/05/2018
          person_name     id    Total  Paid        Date        No
        1      Deniss  55227  1191,75  0,00  21/08/2019  20180615
        5     RINALDS  56002   169,00  0,00  21/08/2019  20180615
        8        OLGA  54689   812,90  0,00  21/08/2019  20180515
          person_name     id    Total  Paid        Date        No
        2      Deniss  55227  1191,75  0,00  21/08/2019  20180613
        6     RINALDS  56002   169,00  0,00  21/08/2019  20180614
          person_name     id    Total  Paid        Date        No
        3      Deniss  55227  1191,75  0,00  21/08/2019  20180612
    

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多