从python变量载入数据到熊猫数据框中

问题描述:

我有一个变量名称“库存”,它有以下数据。我如何将这个变量的数据加载到熊猫数据框中。如果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

你想作为列名,否则用什么? –

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

我试图解决这个问题是这样的:

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