gpt4 book ai didi

python - 使用 Python 对数据框进行分组

转载 作者:行者123 更新时间:2023-12-01 01:34:44 25 4
gpt4 key购买 nike

我的数据框:

  ordercode             quantity
PMC21-AA1U1FBWBJA 1
PMP23-GR1M1FB3CJ 1
PMC11-AA1U1FJWWJA 1
PMC11-AA1U1FBWWJA+I7 2
PMC11-AA1U1FJWWJA 3
PMC11-AA1L1FJWWJA 3

我想要的输出:

  Group    ordercode                quantity
0 PMC21-AA1U1FBWBJA 1
PMP23-GR1M1FB3CJ 1
PMC11-AA1U1FJWWJA 1
PMC11-AA1U1FBWWJA+I7 1
1 PMC11-AA1U1FBWWJA+I7 1
PMC11-AA1U1FJWWJA 3
2 PMC11-AA1L1FJWWJA 3

所以这里我想要的结果是基于column['quantity']。数量最大值为4

group0和group1中,总值(1+1+1+1=4)(1+3=4)(即保持数量的最大值为4)。在 group2 中,我们可以看到没有要添加的值,因此该组由剩余的值组成(此处为 3)。在group0 & group1中,我们可以看到PMC11-AA1U1FBWWJA+I7的值 split 。

我从论坛得到的帮助很少,并完成了以下编码:

df = pd.DataFrame(np.concatenate(df.apply(lambda x: [x[0]] * x[1], 1).as_matrix()), 
columns=['ordercode'])
df['quantity'] = 1
df['group'] = sorted(range(0, len(df)/3, 1) * 4)[0:len(df)]
df.groupby(['group', 'ordercode']).sum()

但我收到错误。

Type error: 'float' object cannot be interpreted as an integer

如果我在

中使用 int
df['group'] = sorted(range(0, int(len(df)/3), 1) * 4)[0:len(df)]

我再次遇到类型错误。谁能告诉我为什么?

最佳答案

假设你使用Python3,输入双斜杠 // 进行整数除法并将范围转换为列表。

df['group'] = sorted(list(range(0, len(df) // 3, 1)) * 4)[0:len(df)]

对于第二次尝试,它看起来像这样。

df['group'] = sorted(list(range(0, int(len(df) / 3), 1)) * 4)[0:len(df)]

所以完整的代码是这样运行的。我在运行之前将您的示例复制到剪贴板。

import pandas as pd
import numpy as np
df = pd.read_clipboard()
df = pd.DataFrame(np.concatenate(df.apply(lambda x: [x[0]] * x[1], 1).as_matrix()),
columns=['ordercode'])
df['quantity'] = 1
df['group'] = sorted(list(range(0, len(df) // 3, 1)) * 4)[0:len(df)]
df = df.groupby(['group', 'ordercode']).sum()
print(df)

您使用的“.as_matrix()”命令会生成警告,但可以工作。

关于python - 使用 Python 对数据框进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52493090/

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