熊猫为所有唯一列值做某事

时间:2019-11-24 06:58:43

标签: python pandas

只有刚开始使用熊猫的,所以请原谅我的无知。

说我有一个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中使用一组然后嵌套的循环,但是我认为我对基本的数据帧缺乏基本的了解。

1 个答案:

答案 0 :(得分:3)

如果可能的话,用DataFrame.groupby对象用DataFrame.to_csvname的{​​{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.csvenumerate的解决方案:

file2.csv

或者:

for j, (i, g) in enumerate(df.groupby('Name'), 1):
    g.to_csv(f'file{j}.csv', index=False)