将pandas行`i`和第一行写入csv

时间:2017-08-08 09:30:35

标签: python pandas csv

设置向上

我有一个包含多个行和列的pandas数据帧df

每一行都与申请人Pn类似,申请人每栏回答An次问题Qn。 E.g。

       | Q1 | Q2 | Q3 |
       ----------------
   P1  | A1 | A2 | A3 |
   P2  | A1 | A2 | A3 |
   P3  | A1 | A2 | A3 |

我在for循环中获取每个申请人的答案,迭代每行的列,

number_of_applications = len(df)
for i in range(0,number_of_applications):
    var1 = df['var1'][i]
    var2 = df['var2'][i]
    var3 = df['var3'][i]

这很好。

问题

我想将申请人的答案和相应的列名写入csv文件。所以,对于我想写的每个申请人,

     | Q1 | Q2 | Q3 |
     ----------------
     | A1 | A2 | A3 |

申请人特定的csv文件。

我想在循环中这样做。

当前代码

number_of_applications = len(df)
for i in range(0,number_of_applications):
    path = 'mypath'
    os.chdir(path) 
    df.iloc[i].to_csv('name.csv',encoding='utf-8', index=False)

产生一个类似的csv文件,

A1
A2
A3

所以只是答案,垂直而没有列名。

如何获得,

  | Q1 | Q2 | Q3 |
  ----------------
  | A1 | A2 | A3 |

1 个答案:

答案 0 :(得分:2)

试试这个:

path = '/path/to/output/files/{}.csv'

df.groupby(level=0) \
  .apply(lambda x: x.to_csv(path.format(x.name), index=False))

上面的代码将为每个申请人生成一个CSV文件(索引值)。文件名称如下:

P1.csv
P2.csv
P3.csv
...

其中P1P2P3 - 申请人姓名(索引值)