你好,我有一个数据框,例如:
COL1_1 COL1_3 COL2
Chr1_0 Canis_lupus A
Chr1_0 Canis_lupus A
Chr1_0 Canis_lupus B
Chr1_0 Canis_lupus B
Chr1_0 Canis_lupus B
Chr1_0 Felis_cattus B
Chr1_0 Felis_cattus B
Chr2_0 Felis_cattus A
Chr2_0 Felis_cattus B
Chr2_1 Felis_cattus C
Chr2_1 Felis_cattus D
Chr2_1 Felis_cattus E
,这个想法在每个COL1_1
和COL1_3
中都算出不同的COL2
的数量。
ex:对于Chr1_0
和Canis_lupus
,有2个不同的COL2
(A和B),所以我将2放入新的COL3
中。
如果只有一个值,我输入0。
然后我应该在这里
COL1_1 COL1_3 COL2 COL3
Chr1_0 Canis_lupus A 2
Chr1_0 Canis_lupus A 2
Chr1_0 Canis_lupus B 2
Chr1_0 Canis_lupus B 2
Chr1_0 Canis_lupus B 2
Chr1_0 Felis_cattus B 0
Chr1_0 Felis_cattus B 0
Chr2_0 Felis_cattus A 2
Chr2_0 Felis_cattus B 2
Chr2_1 Felis_cattus C 3
Chr2_1 Felis_cattus D 3
Chr2_1 Felis_cattus E 3
也许会想到分组(COL1_1 {and
COL1_3`)并计算不同COL2值的数量。
答案 0 :(得分:2)
将https://github.com/SAP/karma-ui5与GroupBy.transform
和DataFrameGroupBy.nunique
一起使用,将1
替换为0
:
df['COL3'] = (df.groupby(['COL1_1', 'COL1_3']).COL2.transform('nunique')
.mask(lambda x: x == 1, 0))
或使用replace
:
df['COL3'] = df.groupby(['COL1_1', 'COL1_3']).COL2.transform('nunique').replace({1:0})
print (df)
COL1_1 COL1_3 COL2 COL3
0 Chr1_0 Canis_lupus A 2
1 Chr1_0 Canis_lupus A 2
2 Chr1_0 Canis_lupus B 2
3 Chr1_0 Canis_lupus B 2
4 Chr1_0 Canis_lupus B 2
5 Chr1_0 Felis_cattus B 0
6 Chr1_0 Felis_cattus B 0
7 Chr2_0 Felis_cattus A 2
8 Chr2_0 Felis_cattus B 2
9 Chr2_1 Felis_cattus C 3
10 Chr2_1 Felis_cattus D 3
11 Chr2_1 Felis_cattus E 3