Python 如何使用pandas dataframe操作列表?
我想创建一个数据帧。我从程序中收到以下数据列表:Python 如何使用pandas dataframe操作列表?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我想创建一个数据帧。我从程序中收到以下数据列表: rawdatalist = [ { 'Project_Name':'App1', 'Run Id':'25', 'Complete_Iterations':[('SC1',12.30),('SC2',14.30),('SC3',9.80),('SC4',17.21)] }, { 'Project_Name
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)]
}
]
我能够使用下面的代码创建数据帧,但是值不在适当的位置
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)
以上代码的输出
期望输出:
下面是一个相当简单的方法:
d = ([dict(d["Complete_Iterations"]) for d in rawdatalist])
pd.DataFrame.from_records(d).transpose()
输出为:
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
d = ([dict(d["Complete_Iterations"]) for d in rawdatalist])
pd.DataFrame.from_records(d).transpose()
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