我有数据框
ID 2016-01 2016-02 ... 2017-01 2017-02 ... 2017-10 2017-11 2017-12
111 12 34 0 12 3 0 0
222 0 32 5 5 0 0 0
我需要每12列数一次
ID 2016 2017
111 46 15
222 32 10
我试着用
(df.groupby((np.arange(len(df.columns)) // 31) + 1, axis=1).sum().add_prefix('s'))
但它返回到所有列
但是当我试图使用
df.groupby['ID']((np.arange(len(df.columns)) // 31) + 1, axis=1).sum().add_prefix('s'))
它又回来了
TypeError: 'method' object is not subscriptable
我该怎么解决?
最佳答案
所有没有日期的列中的第一个set_index
:
df = df.set_index('ID')
一。
groupby
bysplit
ed列并首先选择:df = df.groupby(df.columns.str.split('-').str[0], axis=1).sum()
2。
lambda
分割功能:df = df.groupby(lambda x: x.split('-')[0], axis=1).sum()
三。将列转换为日期时间和
groupby
年:df.columns = pd.to_datetime(df.columns)
df = df.groupby(df.columns.year, axis=1).sum()
四。
resample
通过years
:df.columns = pd.to_datetime(df.columns)
df = df.resample('A', axis=1).sum()
df.columns = df.columns.year
print (df)
2016 2017
ID
111 46 15
222 32 10
关于python - Pandas :每N列之和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46607027/