基于多索引对列值求和

Posted

技术标签:

【中文标题】基于多索引对列值求和【英文标题】:Summing column values based on multiindex 【发布时间】:2020-09-07 00:45:57 【问题描述】:

我有一个多索引数据框,为简单起见如下;

                      Values    
01-01-2010 Belgium    1    
           Belgium    7
           UK         3 
           UK         4
           UK         2
           France     1
           France     3
02-01-2010 Belgium    4
           UK         7
           UK         10
           UK         2
           France     4

我需要尝试总结每个国家/地区每天的价值。 实际的数据框有大约 10 年的数据和 40 个国家。

有没有使用 resample() 函数的简单方法来做到这一点? 我似乎无法使用多索引。我也许可以将国家/地区转换回一列?

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

实际上,如果我允许索引首先是列,我认为这会起作用;

sum_df = df.groupby(['Time','From Country']).agg('Value': 'sum')

【讨论】:

【参考方案2】:

groupby 指定级别的索引

df2 = df.groupby(level=[0,1])['Values'].sum()
print(df2)
01-01-2010   Belgium       8
             France        4
             UK            9
02-01-2010   Belgium       4
             France        4
             UK           19
Name: Values, dtype: int64

【讨论】:

我现在实际上遇到了这个错误..ValueError: level > 0 only valid with MultiIndex。也许我的列没有正确编入索引? @spcol print(df.index) 在此处粘贴输出 print(df.index) RangeIndex(start=0, stop=66766, step=1) print(df.columns) 只产生列名。没有索引标题的迹象。 已接受您的回答,因为我认为问题是我的索引开始。如果索引正确,这将起作用。再次感谢!

以上是关于基于多索引对列值求和的主要内容,如果未能解决你的问题,请参考以下文章

创建视图并对列值进行求和

根据可变日期范围(impala)在窗口上对列值求和

使用 sqlbulktools 更新表时对列值求和

使用相同的 ID 列递增地对列值求和

Pandas:如何根据其他列值的条件对列进行求和?

对列值使用变量提示和过滤语句