繁体   English   中英

根据另一列中的分组将 csv 文件 / pandas dataframe 拆分为多个文件

[英]Split up a csv file / pandas dataframe into many files based on grouping in another column

我在名为 list.csv 的 csv 文件中有以下数据集,它有 2 列和 68 行,

name   group
295h1  groupA
20jca  groupA
....
2919d  groupG
....
2xx9a  groupM

每组有 3-5 个名字。

我想将名称分成他们的组并将文件保存到 csv 文件中,这样。

group-1.csv

295h1
20jca
..

group-13.csv

...
2xx9a

到目前为止,我有以下代码,

import pandas as pd

counter = 1
tlist = []
for idx,row in df.iterrows():
    previousGroup = None
    if row['group'] == previousGroup:
        tlist.append(row['name'])
        previousGroup = row['group']
    else:
        with open(f'group-{counter}'), 'w',) as myfile:
             wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
             wr.writerow(tlist)
        counter += 1
        tlist = []

但它创建了 68 个空文件,这是 csv 文件的长度。

如何根据我的要求正确拆分此文件?

如果需要改为组名称groupA使用以1开头的数字,请使用:

for i, (_, group) in enumerate(df.groupby('group'), 1):
    group['name'].to_csv(f'group-{i}.csv', index=False)

编辑:对于文件中的第一个值,一个想法是创建MultiIndex ,例如:

for i, (n, group) in enumerate(df.groupby('group'), 1):
    g = group[['name']]
    g.columns = [[n], g.columns]
    #print (g)
    g.to_csv(f'group-{i}.csv', index=False)

您应该使用 pandas groupby 和 pd.to_csv()

grouped = df.groupby('group')
for num, g in grouped:
    name = 'group' + '.csv'
    g.to_csv(name)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM