Pandas:按特定行的值拆分csv文件

时间:2015-12-02 22:12:19

标签: python csv pandas

我正在使用 Pandas ,但我对它很新,我想知道如何拆分.csv文件看起来像这样:

Code      DateTime      Value
A1        1/1/15 5:45    150
A2        1/1/15 5:45    100
A3        1/1/15 5:45    200
A1        1/1/15 6:00    200
A2        1/1/15 6:00    219
A3        1/1/15 6:00    150
A1        1/1/15 6:15    200 
...

进入单独的.csv文件,以便每个文件只有一个鳕鱼的值,这样做我的输出就是多个csv文件,A1.csvA2.csv等等。我打开文件A1.csv我看到了:

Code      DateTime      Value
A1        1/1/15 5:45    150
A1        1/1/15 6:00    200
A1        1/1/15 6:15    200 
...

依此类推所有文件。

2 个答案:

答案 0 :(得分:2)

这是另一种选择:

for c in df.Code.unique():
    (df[df.Code == c]).to_csv(c + '.csv', index=False)

Writes these files:

Code, DateTime, Value
A1, 1/1/15 5:45,150
A1, 1/1/15 6:00,200
A1, 1/1/15 6:15,200

Etc...

如果你有一个庞大的数据集,使用@EdChum提出的groupby可能会更快,但我发布这个替代方案只是为了表明在pandas中有很多方法可以做。

答案 1 :(得分:1)

我认为以下内容应该可以正常工作,基本上groupby在'代码'上然后迭代这些组并生成文件名并将其写出来:

In [9]:
g=df.groupby('Code')
for gp in g:
    filename = gp[0] + '.csv'
    print(filename)
    gp[1].to_csv(filename)

A1.csv
A2.csv
A3.csv

每组的内容:

In [11]:
for gp in g:
    print(gp[1])

  Code            DateTime  Value
0   A1 2015-01-01 05:45:00    150
3   A1 2015-01-01 06:00:00    200
6   A1 2015-01-01 06:15:00    200
  Code            DateTime  Value
1   A2 2015-01-01 05:45:00    100
4   A2 2015-01-01 06:00:00    219
  Code            DateTime  Value
2   A3 2015-01-01 05:45:00    200
5   A3 2015-01-01 06:00:00    150