选择性分组依据,np.where/Python查询
你有吗 你想要什么选择性分组依据,np.where/Python查询,python,pandas,numpy,Python,Pandas,Numpy,你有吗 你想要什么 A B C 1 1 10 1 1 10 1 2 5 1 3 6 1 4 7 仅当列B为1或2时,才尝试按列A、B分组。如果B是1或2,则输出D列作为C列的和。否则保持设置D列=C列 示例代码给出错误: A B C D 1 1 10 20 1 1 10 20 1 2 5 5 1 3 6 6 1 4 7 7 这里发生了一个问题:df_want['A','B'].map。。如果我只放df_want.A.map,那
A B C
1 1 10
1 1 10
1 2 5
1 3 6
1 4 7
仅当列B为1或2时,才尝试按列A、B分组。如果B是1或2,则输出D列作为C列的和。否则保持设置D列=C列
示例代码给出错误:
A B C D
1 1 10 20
1 1 10 20
1 2 5 5
1 3 6 6
1 4 7 7
这里发生了一个问题:df_want['A','B'].map。。如果我只放df_want.A.map,那么代码会运行,但输出是错误的。仅当列B为1或2时,我才需要它映射总和将
总和
更改为变换('sum')
将
sum
更改为transform('sum')
你可以使用loc
np.where(df_want['B'].isin([1,2]),
df_want.groupby(['A','B'])['C'].transform('sum'), df_want['C'])
你可以使用loc
np.where(df_want['B'].isin([1,2]),
df_want.groupby(['A','B'])['C'].transform('sum'), df_want['C'])
你能看看我的问题吗[
df['D'] = df['C'].copy()
df.loc[df['B'].isin([1,2]), 'D'] = df.loc[df['B'].isin([1,2])].groupby(['A', 'B']).C.transform('sum')
A B C D
0 1 1 10 20
1 1 1 10 20
2 1 2 5 5
3 1 3 6 6
4 1 4 7 7