当前位置: 首页 > 面试题库 >

获取总计pandas列

高博涉
2023-03-14
问题内容

目标

我有一个Pandas数据框,如下所示,具有多个列,并希望获取列的总数MyColumn

数据框 -df

print df

           X           MyColumn  Y              Z   
0          A           84        13.0           69.0   
1          B           76         77.0          127.0   
2          C           28         69.0           16.0   
3          D           28         28.0           31.0   
4          E           19         20.0           85.0   
5          F           84        193.0           70.0

我的尝试

我试图使用groupby和获得列的总和.sum()

Total = df.groupby['MyColumn'].sum()

print Total

这将导致以下错误:

TypeError: 'instancemethod' object has no attribute '__getitem__'

预期产量

我期望输出如下:

319

或者,我想df编辑一个包含总数的新row标题TOTAL

           X           MyColumn  Y              Z   
0          A           84        13.0           69.0   
1          B           76         77.0          127.0   
2          C           28         69.0           16.0   
3          D           28         28.0           31.0   
4          E           19         20.0           85.0   
5          F           84        193.0           70.0   
TOTAL                  319

问题答案:

您应该使用sum

Total = df['MyColumn'].sum()
print (Total)
319

然后loc与配合使用Series,在这种情况下,索引应设置为与需要求和的特定列相同:

df.loc['Total'] = pd.Series(df['MyColumn'].sum(), index = ['MyColumn'])
print (df)
         X  MyColumn      Y      Z
0        A      84.0   13.0   69.0
1        B      76.0   77.0  127.0
2        C      28.0   69.0   16.0
3        D      28.0   28.0   31.0
4        E      19.0   20.0   85.0
5        F      84.0  193.0   70.0
Total  NaN     319.0    NaN    NaN

因为如果传递标量,则将填充所有行的值:

df.loc['Total'] = df['MyColumn'].sum()
print (df)
         X  MyColumn      Y      Z
0        A        84   13.0   69.0
1        B        76   77.0  127.0
2        C        28   69.0   16.0
3        D        28   28.0   31.0
4        E        19   20.0   85.0
5        F        84  193.0   70.0
Total  319       319  319.0  319.0

另有两个解决方案atix请参见以下应用程序:

df.at['Total', 'MyColumn'] = df['MyColumn'].sum()
print (df)
         X  MyColumn      Y      Z
0        A      84.0   13.0   69.0
1        B      76.0   77.0  127.0
2        C      28.0   69.0   16.0
3        D      28.0   28.0   31.0
4        E      19.0   20.0   85.0
5        F      84.0  193.0   70.0
Total  NaN     319.0    NaN    NaN
df.ix['Total', 'MyColumn'] = df['MyColumn'].sum()
print (df)
         X  MyColumn      Y      Z
0        A      84.0   13.0   69.0
1        B      76.0   77.0  127.0
2        C      28.0   69.0   16.0
3        D      28.0   28.0   31.0
4        E      19.0   20.0   85.0
5        F      84.0  193.0   70.0
Total  NaN     319.0    NaN    NaN

注意: 自Pandas v0.20起,ix已弃用。使用lociloc代替。



 类似资料:
  • 问题内容: 我正在使用SQLite,并尝试返回该列中某一列的总数,同时返回所有数据。我不想/不需要对数据进行分组,因为我需要在每个返回的行中都包含数据。 当我包含类似内容时, 它仅返回一行。我需要所有返回的行以及所有条目的总数。 问题答案: 听起来这就是您要寻找的内容: 参见带有演示的SQL Fiddle

  • 问题内容: 如何获得熊猫timedelta中的总小时数? 例如: 注意:根据文档,该属性将返回小时 部分 : 问题答案: 只需找出适合1小时的时间:

  • 问题内容: 我有一个如下所示的Pandas DataFrame: 我想跨列获取某个值的计数。所以我的预期输出是这样的: 我知道如何跨行执行此操作,但是对列执行此操作有点奇怪?请帮助我解决这个问题吗?谢谢。 问题答案: 首先将其堆叠,然后使用value_counts:

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

  • 问题内容: 这应该很容易,但是以某种方式我找不到有效的解决方案。 我有一个熊猫数据框,看起来像这样: 我想按col1和col2分组并获得col3和col4。 由于无法汇总数据,因此可以删除。 这是输出的样子。我很感兴趣,同时具有和中产生的数据帧。是否和是否属于索引并不重要。 这是我尝试过的: 但是,这只会返回的汇总结果。 我在这里迷路了。我发现的每个示例仅汇总一列,显然不会发生此问题。 问题答案:

  • 我有一个熊猫数据框,其中包含如下所示的数据: 所以ID可以在特定月份的任何类下,下个月他的类可能会改变。现在我想做的是,为每个ID获取它在特定类别下的月数,以及它属于的最新类别。像下面这样: 如何在python中实现这一点。有人能帮我吗?另外,由于真实的数据集是巨大的,并且无法手动验证,我如何才能获得属于多个类的ID列表?