Python 3.x dataframe创建一个新列,其值基于另一列上的groupby和

Python 3.x dataframe创建一个新列,其值基于另一列上的groupby和,python-3.x,pandas,numpy,dataframe,Python 3.x,Pandas,Numpy,Dataframe,我正在尝试为df创建一个新列amount\u标志,该列中的值基于groupby另一列键,如果amountsum为0,则将True分配给amount\u标志,否则为False。df看起来像 key amount amount_0_flag negative_amount 1 1.0 True False 1 1.0 True True 2 2.0 False

我正在尝试为
df
创建一个新列
amount\u标志
,该列中的值基于
groupby
另一列
,如果
amount
sum为0,则将
True
分配给
amount\u标志
,否则
为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\u 0\u标志
,因为在集群中,一个元素的
数量为负1,另一个元素的
数量为正1

df.groupby('key')['amount'].sum()

仅给出每个集群的
金额
之和,不考虑
负金额
中的值,我想知道如何使用pandas/numpy查找
0
sum amounts Consording
负金额
值的集群及其行

让我们尝试一下,我创建了一个“新列”,显示与您的“金额0”标志的比较:

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