Id B
1 6
2 13
1 6
2 6
1 6
2 6
1 10
2 6
2 6
2 6
我想要一个新列,比如 C
,我可以在 Id
级别获得 B=6
的分组值
Jan18.loc[Jan18['Enquiry Purpose']==6].groupby(Jan18['Member Reference']).transform('count')
Id B No_of_6
1 6 3
2 13 5
1 6 3
2 6 5
1 6 3
2 6 5
1 10 3
2 6 5
2 6 5
2 6 5
最佳答案
比较值 Series.eq
对于 ==
,转换为整数并使用 GroupBy.transform
对于由每组 sum
填充的新列:
df['No_of_6'] = df['B'].eq(6).astype(int).groupby(df['Id']).transform('sum')
#alternative
#df['No_of_6'] = df.assign(B= df['B'].eq(6).astype(int)).groupby('Id')['B'].transform('sum')
print (df)
Id B No_of_6
0 1 6 3
1 2 13 5
2 1 6 3
3 2 6 5
4 1 6 3
5 2 6 5
6 1 10 3
7 2 6 5
8 2 6 5
9 2 6 5
通常根据您的条件创建 bool 掩码并在下面传递:
mask = df['B'].eq(6)
#alternative
#mask = (df['B'] == 6)
df['No_of_6'] = mask.astype(int).groupby(df['Id']).transform('sum')
关于python-3.x - 我们如何对列中选定的行值进行分组并将其分配给 pandas df 中的新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57493504/