gpt4 book ai didi

python - 如何迭代数据列的每个单元格,转换和追加每个单元格?

转载 作者:行者123 更新时间:2023-11-28 22:23:11 25 4
gpt4 key购买 nike

数据框列的每一行都是一个字典列表。

我想将字典列表转换为一个新的数据框,每个字典都作为我的数据框中的一个新单元格。字典的键作为列。每本字典有 44 个键,所以我有 44 列。我需要对数据框列的所有行(列表)执行此操作,并将每个新转换的数据框单元附加到现有数据框。

我的问题是,并非我列表中的所有词典都转换为新数据框中的单元格。许多词典都遗漏了。

My data frame column df[‘data’] looks like this:

0 [
{ "name": "Tom", "age": 10 },
{ "name": "Mark", "age": 5 },
{ "name": "Pam", "age": 7 },
{ "name": "Dick", "age": 12 }
]

1 [
{ "name": “Ash", "age": 20 },
{ "name": “Jim", "age": 54 },
{ "name": “Sam", "age": 29 },
{ "name": “Poo", "age": 15 }
]
len(df) = 2

输出应该是这样的:df_all

Name Age
Tom 10
Mark 5
Pam 7
Dick 12
Ash 20
Jim 54
Sam 29
Poo 15

len(df_all) =8

我的代码如下:

#Reading all the rows of the column ‘data’ from the df
data = df['data'].iloc[:1500]
len(data) #1500

#Creating an empty data frame
df_append = pd.DataFrame([])

#Iterating over all rows(lists of dictionaries) of a data frame and converting
#each list to a data frame and keep appending to it.

for each_item in data:
df_each_row = pd.DataFrame(each_item)
df_all = df_append.append(df_each_row)
df_all

len(df_all) #501

如果“数据”中的每一行(列表)有 10 个字典,那么最终数据帧中应该有 1500*10(15000) 行。相反,我只得到 501 行。但是,我正确地得到了 44 列。

最佳答案

使用np.concatenate + pd.DataFrame构造函数。

df

col
0 [{'age': 10, 'name': 'Tom'}, {'age': 5, 'name'...
1 [{'age': 20, 'name': 'Ash'}, {'age': 54, 'name'...

pd.DataFrame(np.concatenate(df.col).tolist())

age name
0 10 Tom
1 5 Mark
2 7 Pam
3 12 Dick
4 20 Ash
5 54 Jim
6 29 Sam
7 15 Poo

如果你有一个系列(不是数据框),你可以只到 np.concat(s) 其中 s 是你的 pd.Series

关于python - 如何迭代数据列的每个单元格,转换和追加每个单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47216177/

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