繁体   English   中英

Pandas dataframe,如何创建一个新的总计列,其中包含基于其他列的值

[英]Pandas dataframe, how to create a new totals column containing values based on other column

>>> df

         Dr Name           Type   Total  Fund Total
0        Debtors  Balance Sheet  200.00        0.00
1           Bank  Balance Sheet  352.25      100.00
4   General Fund           Fund -100.00     -252.25
5  Building Fund           Fund    0.00     -300.00

我想要创建一个新列,填充Totals or基金总计。

如果TypeBalance Sheet ,我希望使用Total列 - 如果TypeFund ,则使用Fund Total 要产生这个:

>>> df

         Dr Name           Type   Total  Fund Total   Grand Total
0        Debtors  Balance Sheet  200.00        0.00        200.00
1           Bank  Balance Sheet  352.25      100.00        352.25
4   General Fund           Fund -100.00     -252.25       -252.25
5  Building Fund           Fund    0.00     -300.00       -300.00

谢谢

这是一个可能的解决方案:

df["Grand Total"] = df.where(df["Type"] == "Fund")["Fund Total"].fillna(df["Total"])

使用df.where我仅在类型为 Fund 的情况下提取列Fund Total (其他行将是nan 。然后fillna使用另一列填充那些nan (在这种情况下为Total

另一种方法是使用where from numpy

import panda as pd

df['Grand Total'] = np.where(df['Type'] == 'Fund', df['Fund Total'], df['Total'])
print(df)

# Output
         Dr Name           Type   Total  Fund Total  Grand Total
0        Debtors  Balance Sheet  200.00        0.00       200.00
1           Bank  Balance Sheet  352.25      100.00       352.25
4   General Fund           Fund -100.00     -252.25      -252.25
5  Building Fund           Fund    0.00     -300.00      -300.00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM