只有刚开始使用熊猫的,所以请原谅我的无知。
说我有一个csv文件,其中包含许多行和列:
ID, Name, Number, SomethingElse
1, John, 234234, "word"
2, Dave, 2342423, "word2"
3, John, 54365345, "word3"
我想用Name的唯一值创建一个新的csv。 我正在使用:
unique = df.Name.unique()
要获取新的DataFrame?具有所有唯一的名称,但我不知道如何使用此新DF查找每个名称,并使用该名称的所有值创建一个新文件:
file1.csv
ID, Name, Number, SomethingElse
1, John, 234234, "word"
3, John, 54365345, "word3"
file2.csv
ID, Name, Number, SomethingElse
2, Dave, 234234, "word2"
通常,我会在Python3中使用一组然后嵌套的循环,但是我认为我对基本的数据帧缺乏基本的了解。
答案 0 :(得分:3)
如果可能的话,用DataFrame.groupby
对象用DataFrame.to_csv
用name
的{{1}}值更改文件名或John.csv
循环:
Dave.csv
对于小写文件名,请添加for i, g in df.groupby('Name'):
g.to_csv(f'{i}.csv', index=False)
:
lower()
您的解决方案也可以与boolean indexing
一起用于过滤:
for i, g in df.groupby('Name'):
g.to_csv(f'{i.lower()}.csv', index=False)
for v in df.Name.unique():
df[df['Name'] == v].to_csv(f'{v.lower()}.csv', index=False)
,file1.csv
和enumerate
的解决方案:
file2.csv
或者:
for j, (i, g) in enumerate(df.groupby('Name'), 1):
g.to_csv(f'file{j}.csv', index=False)