【发布时间】:2017-03-09 21:09:19
【问题描述】:
我有一个熊猫数据框,它有一列包含数组。我想通过为数组的每个元素重复其他列的值来“展平”它。
我通过迭代每一行来构建一个临时值列表,但它使用的是“纯 python”并且速度很慢。
有没有办法在 pandas/numpy 中做到这一点?也就是说,我尝试在下面的示例中改进 flatten 功能。
非常感谢。
toConvert = pd.DataFrame({
'x': [1, 2],
'y': [10, 20],
'z': [(101, 102, 103), (201, 202)]
})
def flatten(df):
tmp = []
def backend(r):
x = r['x']
y = r['y']
zz = r['z']
for z in zz:
tmp.append({'x': x, 'y': y, 'z': z})
df.apply(backend, axis=1)
return pd.DataFrame(tmp)
print(flatten(toConvert).to_string(index=False))
这给出了:
x y z
1 10 101
1 10 102
1 10 103
2 20 201
2 20 202
【问题讨论】:
标签: python arrays performance pandas numpy