将求和行添加到数据框中的特定列

时间:2019-08-07 20:10:36

标签: python pandas

我有一个数据框,

df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123, 
                    'count': 12}, {'project': 123457, 'date': '08/07/2019', 
                    'total': 124, 'count': 13}, {'project': 123458, 'date': 
                    '08/07/2019', 'total': 125, 'count': 14}])

我只想在totalcount列的底部添加一个总行。我知道我能做到

df.loc['Total'] = df.sum(numeric_only=True)

但是我的project列是数字,我不要在最底行添加单词Total,只希望这两列之和。有什么方法可以删除单词并确保仅对这两列求和?

3 个答案:

答案 0 :(得分:3)

我相信每个项目都有唯一的ID,所以我不知道这是否是有效的解决方案。由于对这个问题没有限制,因此我提出以下建议,通过使用列项目作为索引,您可以轻松地添加带有其信息的其他项目ID,最后一行将它们汇总起来!

import pandas as pd
df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123, 
                    'count': 12}, {'project': 123457, 'date': '08/07/2019', 
                    'total': 124, 'count': 13}, {'project': 123458, 'date': 
                    '08/07/2019', 'total': 125, 'count': 14}])
df1 = df.set_index('project')
df1.loc['Total'] = df1.sum(numeric_only=True)
print(df1)

我得到了这个结果,这就是我相信你想要的:

               date  total  count
project
123456   08/07/2019  123.0   12.0
123457   08/07/2019  124.0   13.0
123458   08/07/2019  125.0   14.0
Total           NaN  372.0   39.0

答案 1 :(得分:2)

我相信您正在寻找类似的东西

In [1]:
import pandas as pd

df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123, 
                    'count': 12}, {'project': 123457, 'date': '08/07/2019', 
                    'total': 124, 'count': 13}, {'project': 123458, 'date': 
                    '08/07/2019', 'total': 125, 'count': 14}])

df.append(df[['count', 'total']].sum(numeric_only=True), ignore_index=True)

Out [1]:
    count   date         project    total
0   12.0    08/07/2019   123456.0   123.0
1   13.0    08/07/2019   123457.0   124.0
2   14.0    08/07/2019   123458.0   125.0
3   39.0    NaN          NaN        372.0

答案 2 :(得分:0)

我会这样做:

import pandas as pd
import numpy as np

df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123, 
                    'count': 12}, {'project': 123457, 'date': '08/07/2019', 
                    'total': 124, 'count': 13}, {'project': 123458, 'date': 
                    '08/07/2019', 'total': 125, 'count': 14}])

# Append an empty row at the bottom of the df
df.loc[df.shape[0]] = [np.nan for col_num in range(1,df.shape[1]+1)]

# Write the sums of the columns you want at the last row 
df.iloc[df.shape[0]-1,[2,3]] = df.iloc[:,[2,3]].sum(axis=0)

输出:

     project          date  total   count
0   123456.0    08/07/2019  123.0   12.0
1   123457.0    08/07/2019  124.0   13.0
2   123458.0    08/07/2019  125.0   14.0
3        NaN           NaN  372.0   39.0

这样,无论df有多少行或多少列,您都可以计算想要的任何列的总和并将它们附加在最后一行。