gpt4 book ai didi

python - pandas.DataFrame.explode 产生太多行

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:25 27 4
gpt4 key购买 nike

提供以下数据:

data = {'type': ['chisel', 'disc', 'user_defined'],
'depth': [[152, 178, 203], [127, 152, 178, 203], [0]],
'residue': [[0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0], [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0], [0.0]],
'timing': [["10-nov", "10-apr"], ["10-nov", "10-apr"], ["10-apr"]]}

创建df:

import pandas as pd

df = pd.DataFrame(data)

输出如预期:

enter image description here

爆炸 计时:

df = df.explode('timing')

输出如预期:

  • 每个项目在计时中额外增加一行

enter image description here

爆炸 深度:

df = df.explode('depth')

输出不符合预期:

  • 我预计凿子有6行,圆盘有8行
    • 各 3 个,用于 10-apr10-nov,用于凿子
    • 各 4 个,4 月 10 日10 月 11 月光盘
  • explode 产生的数量是预期的两倍
    • 12 而不是 6,用于凿子
    • 对于光盘,16 个而不是 8

enter image description here

问题:

  • 我的期望不正确吗?
  • 我是否错误地使用了explode

最佳答案

每当您使用重复索引时,

pandas 都会产生意外结果。请注意,在第一次爆炸之后,您最终会得到重复的索引。

重置它们将产生一个按您预期工作的数据框。

修复它

df.explode('timing', ignore_index=True).explode('depth')
<小时/>
           type depth                              residue  timing
0 chisel 152 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
0 chisel 178 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
0 chisel 203 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
1 chisel 152 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
1 chisel 178 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
1 chisel 203 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
2 disc 127 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
2 disc 152 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
2 disc 178 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
2 disc 203 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-nov
3 disc 127 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
3 disc 152 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
3 disc 178 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
3 disc 203 [0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 10-apr
4 user_defined 0 [0.0] 10-apr

关于python - pandas.DataFrame.explode 产生太多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57666350/

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