我正在尝试为amount_0_flag
创建新列df
,该列中的值基于groupby
另一列key
,如果amount
1}} sum
为0,True
分配给amount_0_flag
,否则为False
。 df
看起来像,
key amount amount_0_flag negative_amount
1 1.0 True False
1 1.0 True True
2 2.0 False True
2 3.0 False False
2 4.0 False False
因此,当df.groupby('key')
,群集key=1
时,会为群集的每个元素分配True
到amount_0_flag
,因为在群集中,一个元素为负1另一个元素将{1}作为amount
s。
df.groupby('key')['amount'].sum()
仅为每个群集提供amount
的总和而不考虑negative_amount
中的值,我想知道如何找到群集及其行0
总和量{{1}使用pandas / numpy的值。
答案 0 :(得分:2)
让我们试试这个,我创建了一个'new_column',显示与'amount_0_flag'的比较:
df['new_column'] = (df.assign(amount_n = df.amount * np.where(df.negative_amount,-1,1))
.groupby('key')['amount_n']
.transform(lambda x: sum(x)<=0))
输出:
key amount amount_0_flag negative_amount new_column
0 1 1.0 True False True
1 1 1.0 True True True
2 2 2.0 False True False
3 2 3.0 False False False
4 2 4.0 False False False