字典列表到 pandas pandas DataFrame
List of dict of dict to pandas pandas DataFrame
我想在数据帧中转换 future_df:
item1 = {'name': 'A', 'parameters': [{'Parameter': 'P1', 'Value': 0.0},{'Parameter': 'P2', 'Value': 0.4}]}
item2 = {'name': 'B', 'parameters': [{'Parameter': 'P1', 'Value': 3},{'Parameter': 'P2', 'Value': 7}]}
future_df = [item1, item2]
我用丑陋的以下几行实现了这一点:
df = {}
for item in future_df:
dic = {key['Parameter']:key['Value'] for key in item['parameters']}
df[future_df['name']] = dic
df = pd.DataFrame(df.values(), index=df.keys())
我知道这是一个非常硬编码的解决方案,必须有一个更干净优雅的解决方案。我想 json_normalize 函数可能会有帮助,但我没有找到正确使用它的方法。
我不知道如果你先写一个函数来旋转它是否更好:
def ToDF(item):
x = pd.DataFrame(item['parameters'])
x.insert(0,"name",item['name'])
return x.pivot_table(columns="Parameter",values="Value",index="name")
然后像这样连接:
df = pd.concat([ToDF(i) for i in future_df])
df
Parameter P1 P2
name
A 0.0 0.4
B 3.0 7.0
从技术上讲,一条线:
print (pd.DataFrame({i["name"]: {v["Parameter"]: v["Value"] for v in i["parameters"]}
for i in future_df}).T)
P1 P2
A 0.0 0.4
B 3.0 7.0
我想在数据帧中转换 future_df:
item1 = {'name': 'A', 'parameters': [{'Parameter': 'P1', 'Value': 0.0},{'Parameter': 'P2', 'Value': 0.4}]}
item2 = {'name': 'B', 'parameters': [{'Parameter': 'P1', 'Value': 3},{'Parameter': 'P2', 'Value': 7}]}
future_df = [item1, item2]
我用丑陋的以下几行实现了这一点:
df = {}
for item in future_df:
dic = {key['Parameter']:key['Value'] for key in item['parameters']}
df[future_df['name']] = dic
df = pd.DataFrame(df.values(), index=df.keys())
我知道这是一个非常硬编码的解决方案,必须有一个更干净优雅的解决方案。我想 json_normalize 函数可能会有帮助,但我没有找到正确使用它的方法。
我不知道如果你先写一个函数来旋转它是否更好:
def ToDF(item):
x = pd.DataFrame(item['parameters'])
x.insert(0,"name",item['name'])
return x.pivot_table(columns="Parameter",values="Value",index="name")
然后像这样连接:
df = pd.concat([ToDF(i) for i in future_df])
df
Parameter P1 P2
name
A 0.0 0.4
B 3.0 7.0
从技术上讲,一条线:
print (pd.DataFrame({i["name"]: {v["Parameter"]: v["Value"] for v in i["parameters"]}
for i in future_df}).T)
P1 P2
A 0.0 0.4
B 3.0 7.0