【问题标题】:How To Create a "Total" Row for One Column in a Pandas Dataframe如何在 Pandas 数据框中为一列创建“总计”行
【发布时间】:2022-09-30 23:16:37
【问题描述】:

因此,我使用 os 模块从文件名中创建了一个 DF

文件名包括美元金额,我希望能够创建一行,仅合计 DF 列中的金额(索引 3)

但是,当我遵循此代码结构时:

File_Name.loc[\'Total\'] = File_Name.sum()

我明白了:

                                                 Invoice  ...                                             Amount
30                                                  6515  ...                                             401.01
Total  0822OH082522KTR1987000084201987000084481987000...  ...  478.88550.0030.1032.3912.0432.521020.4729.1442...

我希望它看起来像这样:

         Invoice         Vendor   Amount
30          6515        Expense   401.01
Total                          198556.79

任何帮助将非常感激!

  • 我建议重新考虑使用熊猫,就好像它是 Excel 一样。通过在一行中添加总计,您可以使总计成为表中的一个数据行。即,对于进一步的计算,您将获得一个额外的 Invoice 数据点以获得大笔款项。
  • @IgnatiusReilly 我想找到金额列的总和,而不是发票列。这可能是我的问题,因为发票列只是发票编号/识别信息。在这种情况下,要像 excel 一样对待它,我是否需要创建总行并操作 Total[3]?

标签: python pandas dataframe sum


【解决方案1】:

您在Amount 中得到的长数字可能是字符串连接的结果:

'478.88' + '550.00' + '30.10' + '32.39'

输出

478.88550.0030.1032.39

因此,第一步是将Amount 列转换为带有File_Name['Amount'].astype('float') 的浮点数。

您可以添加Amount 的总和并得到视觉效果你正在寻找

df.loc['Total', 'Amount'] = df['Amount'].sum()
df.loc['Total'] = df.loc['Total'].fillna('')

不过,我强烈建议不要像使用 Excel 一样使用 pandas。虽然在如此繁重的界面下工作时 Excel 样式可能很方便,但从编程的角度来看这是有问题的:现在您将在 Amount 中拥有一个具有较大值的额外数据点和大量空字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2013-07-16
    • 2012-04-30
    • 2017-04-16
    相关资源
    最近更新 更多