Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列总计追加到数据帧_Python_Pandas - Fatal编程技术网

Python 将列总计追加到数据帧

Python 将列总计追加到数据帧,python,pandas,Python,Pandas,我有一个带有数值的数据框。追加表示每列总和的行(具有给定索引值)的最简单方法是什么?一种方法是使用列总和创建数据帧,并使用DataFrame.append(…)。例如: import numpy as np import pandas as pd # Create some sample data df = pd.DataFrame({"A": np.random.randn(5), "B": np.random.randn(5)}) # Sum the columns: sum_row =

我有一个带有数值的数据框。追加表示每列总和的行(具有给定索引值)的最简单方法是什么?

一种方法是使用列总和创建数据帧,并使用DataFrame.append(…)。例如:

import numpy as np
import pandas as pd
# Create some sample data
df = pd.DataFrame({"A": np.random.randn(5), "B": np.random.randn(5)}) 
# Sum the columns:
sum_row = {col: df[col].sum() for col in df}
# Turn the sums into a DataFrame with one row with an index of 'Total':
sum_df = pd.DataFrame(sum_row, index=["Total"])
# Now append the row:
df = df.append(sum_df)
df.append(pd.Series(df.sum(),name='Total'))

我是这样做的:

df = pd.concat([df,pd.DataFrame(df.sum(axis=0),columns=['Grand Total']).T])
这将为每行添加一列总计:

df = pd.concat([df,pd.DataFrame(df.sum(axis=1),columns=['Total'])],axis=1)
必须将
系列
对象(或者在上面的答案中,
dict
)转换回数据帧,然后附加它,这似乎有点烦人,但它确实适合我

看起来这应该只是数据帧的一种方法,就像pivot_表有边距一样


也许有人知道一种更简单的方法。

要添加一个
总计
列,该列是整行的总和:

df['Total'] = df.sum(axis=1)

要添加包含列总计的行,请执行以下操作:

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

您可以使用
append
方法将索引与数据帧相同的序列添加到数据帧中。例如:

import numpy as np
import pandas as pd
# Create some sample data
df = pd.DataFrame({"A": np.random.randn(5), "B": np.random.randn(5)}) 
# Sum the columns:
sum_row = {col: df[col].sum() for col in df}
# Turn the sums into a DataFrame with one row with an index of 'Total':
sum_df = pd.DataFrame(sum_row, index=["Total"])
# Now append the row:
df = df.append(sum_df)
df.append(pd.Series(df.sum(),name='Total'))
**获取列总数和行总数** 这将给出行和列的总计:

import numpy as np
import pandas as pd


df = pd.DataFrame({'a': [10,20],'b':[100,200],'c': ['a','b']})

df.loc['Column_Total']= df.sum(numeric_only=True, axis=0)
df.loc[:,'Row_Total'] = df.sum(numeric_only=True, axis=1)

print(df)

                 a      b    c  Row_Total
0             10.0  100.0    a      110.0
1             20.0  200.0    b      220.0
Column_Total  30.0  300.0  NaN      330.0
  • 计算总和并将结果转换为列表(轴=1:行总和,轴=0:列总和)
  • 将步骤1的结果添加到具有新名称的现有数据帧中

  • 我没有找到现代熊猫的方法!由于两个链式换位,这个解决方案有点脏,我不知道如何在行上使用
    .assign

    #生成数据帧
    作为pd进口熊猫
    df=pd.DataFrame({'a':[10,20],'b':[100200],'c':['a','b']})
    #解决方案
    df.T.assign(总计=λx:x.sum(轴=1)).T
    
    输出:

    a b c总计
    10100A110
    120200B220
    
    如果df中有非数字列,则不会给出有意义的结果。此答案会按照询问者的要求添加一列,而不是一行。(但是,这个答案帮助我解决了我试图解决的问题,所以我很感激。)这个答案解决了一个不同的问题。如果df中有非数字列,则不会给出有意义的结果。如果是nan,请首先应用df.fillna(0),然后使用它sum@Alexander嘘,,行和列合计如何?如果要添加到方法链的末尾,请执行以下操作:
    .pipe(lambda df:df.append(pd.Series(df.sum(),name='total'))