我有一个包含列的数据框,每行包含一个dict。
我想提取那些字典并将它们转换为数据帧,以便我可以将它们合并在一起。
最好的方法是什么?
类似的东西:
for row in dataframe.column:
dataframe_loop = pd.DataFrame(dataframe['column'].iloc(row), columns=['A','B'])
dataframe_result = dataframe_result.append(dataframe_loop)
答案 0 :(得分:1)
import pandas as pd
d = {'col': pd.Series([{'a':1}, {'b':2}, {'c':3}])}
df = pd.DataFrame(d)
>>>print(df)
col
0 {'a': 1}
1 {'b': 2}
2 {'c': 3}
res = {}
for row in df.iterrows():
res.update(row[1]['col'])
>>>print(res)
{'b': 2, 'a': 1, 'c': 3}
答案 1 :(得分:0)
如果您的列包含dicts,并且您希望从这些dicts中创建数据框,则只需将该列转换为dicts列表并将其直接转换为数据框:
pd.DataFrame(dataframe['column'].tolist())
字典键将成为列。如果您想要其他行为,则需要指定。
答案 2 :(得分:0)
我不知道你dataframe.column
中的词汇是什么样的。如果它看起来像下面的字典,我想你可以使用pandas.concat
将字典集中在一起。
import pandas as pd
# create a dummy dataframe
dataframe = pd.DataFrame({'column':[{'A':[1,2,3], 'B':[4,5,6]}, \
{'A':[7,8,9], 'B':[10,11,12]}, \
{'A':[13,14,15], 'B':[16,17,18]}]})
#print(dataframe)
res = pd.concat([pd.DataFrame(row, columns=['A', 'B']) for row in dataframe.column], ignore_index=True)
print(res)