3 回答
TA贡献1811条经验 获得超5个赞
为了提高效率,您应该在构建数据框时尝试操作数据,而不要单独操作。
然而,裂开你的词典键和值可以使用的组合numpy.repeat和itertools.chain。这是一个最小的示例:
df = pd.DataFrame({'A': [1, 2],
'B': [{'key1': 'val0', 'key2': 'val9'},
{'key1': 'val1', 'key2': 'val2'}],
'C': [{'key3': 'val10', 'key4': 'val8'},
{'key3': 'val3', 'key4': 'val4'}]})
import numpy as np
from itertools import chain
chainer = chain.from_iterable
lens = df['B'].map(len)
res = pd.DataFrame({'A': np.repeat(df['A'], lens),
'B': list(chainer(df['B'].map(lambda x: x.values())))})
res.index = chainer(df['B'].map(lambda x: x.keys()))
print(res)
A B
key1 1 val0
key2 1 val9
key1 2 val1
key2 2 val2
TA贡献1942条经验 获得超3个赞
根据评论更新:熊猫数据框可以容纳字典,但不建议这样做。
熊猫解释说,您希望每个字典键都有一个索引,然后在它们之间广播单个项目列。
因此,为帮助您解决问题,我建议您将字典中的项目作为列阅读。数据帧通常用于什么并且非常擅长。
示例错误是由于熊猫试图通过键值对读取字典中的错误:
df = pd.DataFrame(columns= ['a', 'b'], index=['a', 'b'])
df.loc['a','a'] = {'apple': 2}退货
ValueError: Incompatible indexer with Series
每个jpp中的以下注释(使用构造方法时):
“它们可以容纳任意类型,例如
df.iat[0, 0] = {'apple': 2}但是,不建议以这种方式使用熊猫。”
添加回答
举报
