pandas dataframe groupby by column position

时间:2018-02-08 19:54:38

标签: python-3.x pandas pandas-groupby

我有一个在pandas数据帧上进行分组的函数。问题是我的数据框可以有可变数量的列。我想聚合:将第一列的最后一列加起来。最后一列的名称不同,但第一列的名称是固定的。

我怎样才能实现这个群体?我尝试使用iloc并使用df.columns [-1]获取最后一列的列名,但是,这些技巧似乎都不起作用。

有没有更好的方法来实现这一点,而不是将最后一个列名称更改为某个常用值?

2 个答案:

答案 0 :(得分:2)

df.groupby(df.columns[0])[df.columns[-1]].sum()应该有用。

实施例

df = pd.DataFrame({
    'a': [1,1,2,2],
    'b': [1,2,3,4]
})

df.groupby(df.columns[0])[df.columns[-1]].sum()
#a
#1    3
#2    7
#Name: b, dtype: int64

答案 1 :(得分:1)

只需使用Series选择的iloc,@ psidom借用的数据:

s = df.iloc[:, -1].groupby(df.iloc[:, 0]).sum()
print (s)
a
1    3
2    7
Name: b, dtype: int64