我在一个名为 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 文件的长度。
如何根据我的要求正确拆分此文件?
答案 0 :(得分:1)
如果需要而不是组名 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)
答案 1 :(得分:0)
你应该使用 pandas groupby 和 pd.to_csv()
grouped = df.groupby('group')
for num, g in grouped:
name = 'group' + '.csv'
g.to_csv(name)