2017-04-04 48 views
1

我正在嘗試使用熊貓轉換csv。 我有* .csv文件的樣子:如何將包含多個鍵值對的CSV文件轉換爲以鍵爲列的數據框

header1,value1,header2,value2,header3,value3,header4,value4 
header2,value2,header3,value3 
header1,value1,header2,value2 
header1,value1,header3,value3,header4,value4 

我想有這樣一個新的CSV:

header1,header2,header3,header4 
value1,value2,value3,value4 
,value2,value3, 
value1,value2,, 
value1,,value3,value4 

代碼看起來象的開頭:

import csv 
import pandas as pd 

# Read the file 
df = pd.read_csv('in.csv') 
df_data = df[1,9] 

SOME CODE 

df_data.to_csv('output.csv') 

謝謝,

+2

那麼你有什麼嘗試? '一些代碼'是你的嘗試? –

+0

我嘗試通過使用row_data = [row [1],row [3],row [5]]和row_header = [row [0],row [2],row [4]]將值與頭部分開for循環並在文件中寫入,但標題和值不對齊。 – Shadoward

回答

0

加載沒有標題的數據以將其全部保存在您的數據框中:

df=pd.read_csv('foobar.txt', sep=',', header=None) 

然後重塑爲seriesbut保持0級指數來獲得行從原來的CSV編號:

s = df.stack() 
s.index = s.index.droplevel(-1) 

s 
Out[92]: 
0  header1 
0  value1 
0  header2 
0  value2 
0  header3 
0  value3 
0  header4 
0 value4 
1  header2 
1  value2 
... 

現在串接奇數和這一系列的偶數場成數據幀,添加標題列索引並拆散它:

pd.concat([s[::2], s[1::2]], axis=1).set_index(0, append=True).unstack(1) 
Out[104]: 
     1        
0 header1 header2 header3 header4 
0 value1 value2 value3 value4 
1 None value2 value3  None 
2 value1 value2  None  None 
3 value1  None value3 value4 
相關問題