按 N 列或 N 行对 DataFrame 进行分组
groupby DataFrame by N columns or N rows
我想找到一个通用的解决方案来按指定数量的行或列对 DataFrame 进行分组。示例数据框:
df = pd.DataFrame(0, index=['a', 'b', 'c', 'd', 'e', 'f'], columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'])
c1 c2 c3 c4 c5 c6 c7
a 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0
例如,我想一次按 2 行分组并应用类似 mean 或类似的函数。我还想知道如何一次按 N 列分组并应用函数。
按 2 行分组一次预期输出:
c1 c2 c3 c4 c5 c6 c7
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
按 2 列分组一次预期输出:
0 1 2 3
a 0 0 0 0
b 0 0 0 0
c 0 0 0 0
d 0 0 0 0
e 0 0 0 0
f 0 0 0 0
这按 N 行分组
>>> N=2
>>> df.reset_index(drop=True).groupby(by=lambda x: x/N, axis=0).mean()
c1 c2 c3 c4 c5 c6 c7
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
或者这样:
>>> df.groupby(np.arange(len(df.index))//N, axis=0).mean()
c1 c2 c3 c4 c5 c6 c7
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
这按 N 列分组
>>> df.groupby(np.arange(len(df.columns))//N, axis=1).mean()
0 1 2 3
a 0 0 0 0
b 0 0 0 0
c 0 0 0 0
d 0 0 0 0
e 0 0 0 0
f 0 0 0 0
我想找到一个通用的解决方案来按指定数量的行或列对 DataFrame 进行分组。示例数据框:
df = pd.DataFrame(0, index=['a', 'b', 'c', 'd', 'e', 'f'], columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'])
c1 c2 c3 c4 c5 c6 c7
a 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0
例如,我想一次按 2 行分组并应用类似 mean 或类似的函数。我还想知道如何一次按 N 列分组并应用函数。
按 2 行分组一次预期输出:
c1 c2 c3 c4 c5 c6 c7
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
按 2 列分组一次预期输出:
0 1 2 3
a 0 0 0 0
b 0 0 0 0
c 0 0 0 0
d 0 0 0 0
e 0 0 0 0
f 0 0 0 0
这按 N 行分组
>>> N=2
>>> df.reset_index(drop=True).groupby(by=lambda x: x/N, axis=0).mean()
c1 c2 c3 c4 c5 c6 c7
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
或者这样:
>>> df.groupby(np.arange(len(df.index))//N, axis=0).mean()
c1 c2 c3 c4 c5 c6 c7
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
这按 N 列分组
>>> df.groupby(np.arange(len(df.columns))//N, axis=1).mean()
0 1 2 3
a 0 0 0 0
b 0 0 0 0
c 0 0 0 0
d 0 0 0 0
e 0 0 0 0
f 0 0 0 0