python pandas - groupby使用列号/位置(用于循环)

时间:2017-10-25 08:33:10

标签: python pandas dataframe

我想连续循环我的数据帧通过多个groupby并且我想使用列号(或者它是列位置?)作为groupby索引,即。

数据帧

col1 | col2 | col3 | col4
-------------------------
  12    22     13    14
  13    23     15    16
  14    24     17    18

我的代码:

for i in range(1:df.shape[1])
    grouped = df.groupby([i-1, i])
    #grouping by col1+col2, col2+col3, etc.

不幸的是它给我带来了关键错误:

File "C:\Program Files\Python\Python36\lib\site-packages\pandas\core\groupby.py", line 2690, in _get_grouper
    raise KeyError(gpr)
KeyError: 1

如何使用列号进行pandas groupby?

1 个答案:

答案 0 :(得分:2)

您似乎需要rolling +某些功能,例如sum

df = df.rolling(2,axis=1, min_periods=1).sum()
print (df)
   col1  col2  col3  col4
0  12.0  34.0  35.0  27.0
1  13.0  36.0  38.0  31.0
2  14.0  38.0  41.0  35.0

但也许需要这样的东西:

for i in range(1, df.shape[1]):
    grouped = df.groupby(df.columns[[i-1, i]].tolist())