如何在 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
我有如图所示的数据框,我需要通过按文档编号对输入数据框进行分组来创建一个新的数据框,并用 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