gpt4 book ai didi

python - Pandas 数据框的几个字典列表

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:17 25 4
gpt4 key购买 nike

我从一个 API 中提取数据,它为我需要放入 pandas DataFrame 的每个条目返回一个字典列表。困难在于拉取的字典总是不同的。

3 个例子:

[{'name': 'A', 'value': '1'},
{'name': 'B', 'value': 'DateTimeValue'},
{'name': 'C', 'value': '15'}]

[{'name': 'A', 'value': '2'},
{'name': 'D', 'value': 'StringValue'},
{'name': 'C', 'value': '15'}]

[{'name': 'A', 'value': '5'},
{'name': 'B', 'value': 'DateTimeValue'},
{'name': 'C', 'value': '19'},
{'name': 'F', 'value': '25.123'}]

我需要“名称”值作为 DF 中的列,“值”值作为行。在最终的应用程序中,我将需要在 for 循环中一次提取数百个。

我最接近的是在 for 循环中创建几个单行数据帧并尝试合并它们。但是,合并只是创建了带有 _y 和 _x 的新列。我需要数据框仅在出现新名称时创建新列,例如上面的 F。

这是我尝试过的

df = pd.DataFrame(columns=['A']) # A is the only common column 

for dict in dict_list:

data = getdata(API_stuff = ApiStuff, dicts = dict) #returns one list of dicts

df1 = pd.DataFrame(dict) #get the data of one dict
df1 = df1.transpose()
df1.reset_index(inplace=True)
df1 = df1.drop(columns= ['index'])
df1.columns = df1.loc[0] # makes the column names the dict 'names'
df1.drop(df1.index[0],inplace=True) # drop the duplicate row
df1.index = ['Message-ID']
# the above code creates a one row dataframe with the 'name' values as columns

df = pd.merge(df, df1, on='A', how='outer') # merge one df on the previous ones

输出如下:

   A  B  C  A_x  D  C_x  A_y  B_x  C_y  F  
0 1 DT 15
1 2 SV 15
2 5 DT 19 25.123

空格中有NaN

我需要输出为

   A    B    C    D     F   
0 1 DT 15 NaN NaN
1 2 NaN 15 SV NaN
2 5 DT 19 NaN 25.123

我知道有更好的方法可以做到这一点,但我无法将各个部分组合在一起。谢谢!

最佳答案

如果您以正确的形式提供 pd.DataFrame 构造函数可以处理此问题,例如:

In [8]: dict_list
Out[8]:
[[{'name': 'A', 'value': '1'},
{'name': 'B', 'value': 'DateTimeValue'},
{'name': 'C', 'value': '15'}],
[{'name': 'A', 'value': '2'},
{'name': 'D', 'value': 'StringValue'},
{'name': 'C', 'value': '15'}],
[{'name': 'A', 'value': '5'},
{'name': 'B', 'value': 'DateTimeValue'},
{'name': 'C', 'value': '19'},
{'name': 'F', 'value': '25.123'}]]

In [9]: pd.DataFrame([{d['name']:d['value'] for d in ds} for ds in dict_list])
Out[9]:
A B C D F
0 1 DateTimeValue 15 NaN NaN
1 2 NaN 15 StringValue NaN
2 5 DateTimeValue 19 NaN 25.123

关于python - Pandas 数据框的几个字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55480956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com