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