np.where 内的 Pandas GROUPBY

res*_*cot 3 python numpy dataframe pandas

我收到以下代码错误:

np.where(df['A'].groupby([df['B'], df['B_1']]).sum() > 0, 1, 0)

错误: ValueError: operands could not be broadcast together with shapes (2013,) (1353,) ()

groupby里面可以做熊猫吗np.where

做这个的最好方式是什么?

我想要sum一个列,df[A]其中列df[B]df[B_1]

Excel中的公式:

=IF($J3=$C3,IF(SUMIFS($S:$S,$A:$A,$A3,$C:$C,$C3)>0,1,0),"")

python 中的公式:

df['C'] = np.where(df['B_1'] == df['B'], np.where(df['competing'].groupby([df['company_id'], df['company_id.1']]).sum() > 0, 1, 0), None)

Par*_*ait 5

Excel 的SUMIFS返回内联聚合基于返回值与输入值长度相同的条件(即计算之前和之后)。

要获得类似的结果,请考虑 pandasgroupby().transform()它也返回内联聚合,其中返回的列与输入列的长度相同。groupby()单独运行会将记录折叠到返回不同长度值的分组中。

df['C'] = np.where(df['B_1'] == df['B'], 
                   np.where(df.groupby(['company_id', 'company_id.1'])['competing'].transform('sum') > 0, 1, 0),
                   np.nan)
Run Code Online (Sandbox Code Playgroud)