从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
使用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
不是键值对的日期和颜色列怎么样? –
OP说**如果**键/值对,用作列名......所以我跳过了其他的。 OP需要另外澄清。 – piRSquared
感谢您的回复。对于不在键/值对中的数据,我希望熊猫给它一些列名(默认 - 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
你想作为列名,否则用什么? –