2017-08-08 27 views
2

建立寫大熊貓行`i`和第一行到csv

我有包含若干行和列的熊貓數據幀df

每行類似於申請人Pn,並且申請人的每一欄回答An至問題Qn。例如。

 | 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 | 

回答

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 - 申請人的名稱(指數值)

+0

感謝您的答覆。這是否允許我迭代申請人?我需要每個申請人的csv。 – LucSpan

+0

這將產生一個CSV文件,每個申請人:'P1.csv','P2.csv','P3.csv'爲你的樣本DF – MaxU

+0

@MaxU我可以想到其他方法來解決這個問題,但你基本上管理它一排。 +1 –