luc*_*uca 2 python pandas pandas-groupby
我想找到一种通用解决方案,以指定数量的行或列对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
Run Code Online (Sandbox Code Playgroud)
例如,我想一次按2行分组,并应用均值或类似函数。我还想知道如何一次按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
Run Code Online (Sandbox Code Playgroud)
按时间预期输出按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
Run Code Online (Sandbox Code Playgroud)
按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
Run Code Online (Sandbox Code Playgroud)
或这个:
>>> 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
Run Code Online (Sandbox Code Playgroud)
按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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |