gpt4 book ai didi

python - 根据列值将 2 列分组为类别

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

我是 Python 和 Pandas 新手。

我的数据框看起来像这样:

df = pd.DataFrame({'ID': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'],
'Position': ['0', '1', '2', '3', '4', '0', '1', '2', '3', '0', '1', '2', '0', '1', '2'],
'Brand': ['Mazda', 'BMW', 'Ford', 'Fiat', 'Dodge', 'Mazda', 'BMW', 'Ford', 'Fiat', 'BMW', 'Ford', 'Fiat', 'BMW', 'Ford', 'Fiat']
})

我想将位置品牌组合在一起以形成一个类别。

输出将如下所示:

ID  Group
a 1
b 2
c 3
d 3

因为第 1 组是:

0 Mazda
1 BMW
2 Ford
3 Fiat
4 Dodge

c = d 因为它们都有相同顺序的相同护理人员,因此组是相同的 - 3:

0 BMW
1 Ford
2 Fiat

如果 d 具有由 position 列定义的不同顺序,那么它将是不同的类别:

0 Fiat
1 BWM
2 Ford

如何实现第二个代码块中定义的输出?

感谢您的建议。

最佳答案

您可以通过 head 过滤器区分每组相同的前 3 行并转换为元组,然后使用 Series.factorize :

s = (df.groupby(['ID'], sort=False)['Position','Brand']
.apply(lambda x: tuple(x.head(3).values.ravel())))

df = pd.DataFrame({'ID':s.index, 'Cat':pd.factorize(s)[0] + 1})
print (df)
ID Cat
0 a 1
1 b 1
2 c 2
3 d 2

关于python - 根据列值将 2 列分组为类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59304588/

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