我有这个数据帧:
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)