[英]How can I manipulate python list and convert it to pandas dataframe?
[英]How can I manipulate list using pandas dataframe?
我想创建一个 pandas dataframe。我从程序中收到以下数据列表:
rawdatalist = [
{
'Project_Name':'App1',
'Run Id':'25',
'Complete_Iterations':[('SC1',12.30),('SC2',14.30),('SC3',9.80),('SC4',17.21)]
},
{
'Project_Name':'App1',
'Run Id':'24',
'Complete_Iterations':[('SC1',11.30),('SC2',13.30),('SC3',8.80)]
},
{
'Project_Name':'App2',
'Run Id':'25',
'Complete_Iterations':[('SC1',11.30),('SC2',13.30),('SC3',8.80),('SC4',16.21),('SC5',14.59)]
},
{
'Project_Name':'App2',
'Run Id':'24',
'Complete_Iterations':[('SC2',11.30),('SC3',13.30)]
}
]
我能够使用以下代码创建 dataframe,但值不在适当的 position。
import numpy as np
import pandas as pd
data = []
for dict in rawdatalist:
for key in dict['Complete_Iterations']:
for item in key:
data.append(item)
num_data = np.reshape(data, (int(len(data)/2),2))
df = pd.DataFrame(num_data)
t = df.groupby(0)[1].apply(list)
out = pd.DataFrame(t.tolist(), index=t.index)
print(out)
0 1 2 3
0
SC1 12.3 11.3 11.3 None
SC2 14.3 13.3 13.3 11.3
SC3 9.8 8.8 8.8 13.3
SC4 17.21 16.21 None None
SC5 14.59 None None None
0 1 2 3
SC1 12.30 11.30 11.30 None
SC2 14.30 13.30 13.30 11.30
SC3 9.80 8.80 8.80 13.30
SC4 17.21 None 16.21 None
SC5 None None 14.59 None
这是一个相当简单的方法:
d = ([dict(d["Complete_Iterations"]) for d in rawdatalist])
pd.DataFrame.from_records(d).transpose()
output 是:
0 1 2 3
SC1 12.30 11.3 11.30 NaN
SC2 14.30 13.3 13.30 11.3
SC3 9.80 8.8 8.80 13.3
SC4 17.21 NaN 16.21 NaN
SC5 NaN NaN 14.59 NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.