如何在 pandas 数据框中仅对正数进行 groupby concat 总和

How to do groupby concat sum of only positives numbers in pandas dataframe

我有如图所示的数据框,我需要通过按文档编号对输入数据框进行分组来创建一个新的数据框,并用 space 分隔符连接所有描述(列 name:Text)并总结正数作为新列。

输入数据帧

   df
Doc Number    Text   Amount
122           DB1     25
122           DB2     25
122           DB3    -50
345           DB4     10
345           DB5     15
345           DB6     30
345           DB7    -55

预期输出

新数据框 (Df1)

Doc Number  Text           Amount
122        DB1 DB2 DB3     50
345        DB4 DB5 DB6 DB7 55

到目前为止我的代码

df.groupby('Doc Number').apply(lambda x: ' '.join(x.Text))

这怎么能做到?

使用pandas.DataFrame.groupby.agg:

new_df = df.groupby('Doc Number', as_index=False).agg({'Text': ' '.join, 'Amount': lambda x: sum(i for i in x if i > 0)})
print(new_df)

输出:

   Doc Number  Amount             Text
0         122      50      DB1 DB2 DB3
1         345      55  DB4 DB5 DB6 DB7