python两列相乘_python – pandas – 基于两列值的组

我有这个数据帧:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',

'fuz', 'baz', 'fuz', 'coo'],

'B' : ['one', 'one', 'two', 'two',

'three', 'three', 'four', 'one']})

它看起来像这样:

A B

0 foo one

1 bar one

2 foo two

3 bar two

4 fuz three

5 baz three

6 fuz four

7 coo one

我想创建一个新的列组.组聚合A列中唯一值的组合.

它查看每列的唯一值.然后查看组中已有元素的另一列中的值.

结果如下所示:

A B group

0 foo one 1

1 bar one 1

2 foo two 1

3 bar two 1

4 fuz three 2

5 baz three 2

6 fuz four 2

7 coo one 1

在这个例子中,我们从A列的foo开始.所有foo都在group1中. B中的相关值是1和2 =>也在第1组.

A列中的一个和两个的相关值是foo,bar和coo =>也在第1组.

同样的原则给了我们group2.

最好的方法是什么?

最佳答案 这可能是你想要的,它有点硬编码,但有所需的输出:

import pandas as pd

import numpy as np

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',

'fuz', 'baz', 'fuz', 'coo'],

'B' : ['one', 'one', 'two', 'two',

'three', 'three', 'four', 'one']})

g1 = df[df['A']=='foo']

df['group'] = np.where(df['A'].isin(g1['A'])|df['B'].isin(g1['B']),1,2)