2017-05-05 109 views
1

我有一個變量名稱「庫存」,它有以下數據。我如何將這個變量的數據加載到熊貓數據框中。如果key = value存在,我想使用key作爲列名。從python變量載入數據到熊貓數據框中

print (inventory)  
2017-05-01,pink,name=apple,quantity=6,orange,place=america 
2017-05-03,pink,name=mango,quantity=1,orange,place=europe 
2017-05-04,pink,name=apple,quantity=4,orange,place=africa 
+0

你想作爲列名,否則用什麼? –

回答

0

使用pd.DataFrame與理解

inventory = """2017-05-01,pink,name=apple,quantity=6,orange,place=america 
2017-05-03,pink,name=mango,quantity=1,orange,place=europe 
2017-05-01,pink,name=apple,quantity=4,orange,place=africa""" 

lol = [l.split(',') for l in inventory.splitlines()] 

d1 = pd.DataFrame([[i for i in row if '=' not in i] for row in lol]) 
d2 = pd.DataFrame(
    [dict([tuple(i.split('=')) for i in row if '=' in i]) for row in lol] 
) 
d1.join(d2) 

      0  1  2 name place quantity 
0 2017-05-01 pink orange apple america  6 
1 2017-05-03 pink orange mango europe   1 
2 2017-05-01 pink orange apple africa  4 
+0

不是鍵值對的日期和顏色列怎麼樣? –

+0

OP說**如果**鍵/值對,用作列名......所以我跳過了其他的。 OP需要另外澄清。 – piRSquared

+0

感謝您的回覆。對於不在鍵/值對中的數據,我希望熊貓給它一些列名(默認 - 0,1,5等)。我可以稍後重新命名。 – Sun

1

我試圖解決這個問題是這樣的:

import pandas as pd 
inventory = \ 
"""2017-05-01,pink,name=apple,quantity=6,orange,place=america 
2017-05-03,pink,name=mango,quantity=1,orange,place=europe 
2017-05-04,pink,name=apple,quantity=4,orange,place=africa""" 
content = [line.split(',') for line in inventory.splitlines()] 

# prepare column names to be changed and clean the data 
columns_to_be_rename = {} 
for line in content: 
    for i, s in enumerate(line): 
     if '=' in s: 
      columns_to_be_rename[i], line[i] = s.split('=') 

df = pd.DataFrame(content) 
df.rename(columns = columns_to_be_rename) 


      0 1  name quantity 4 place 
0 2017-05-01 pink apple  6 orange america 
1 2017-05-03 pink mango  1 orange europe 
2 2017-05-04 pink apple  4 orange africa