2024-04-25 14:47:57 发布
网友
我想按几列(大约40列)进行分组,并应用聚合和。这40列是数据集的最后40列。我还没有找到一个优雅的方法来做这件事。你知道吗
我尝试按“column\u before”列之后的所有列进行分组。你知道吗
df.groupby('grouping_variable')['column_before':].sum() TypeError: unhashable type: 'slice'
预期结果是一个数据帧,最后40列按照“grouping\u variable”聚合为一个和
您可以通过多种方式实现:
import pandas as pd df = pd.DataFrame({ 'col_to_group': ['A', 'A', 'B', 'B', 'A'], 'col_1': ['a', 'b', 'c', 'a', 'a'], 'col_2': ['x', 'y', 'y', 'y','x'], 'col_3': [.1, .2, .1, .9, .7], 'col_4': [.1, .2, .1, .9, .7], }) df.groupby('col_to_group')['col_3', 'col_4'].sum()
只需选择部分列列表(切片运算符):
df.groupby('col_to_group')[df.columns[3:]].sum() df.groupby('col_to_group')[df.columns[:2:-1]].sum().iloc[:, ::-1]
将列'col_3'的名称与iloc一起使用:
'col_3'
iloc
df.groupby('col_to_group')[df.loc[:, 'col_3':].columns].sum()
类似于列表选择,但有iloc:
df.groupby('col_to_group')[df.iloc[:, 3:].columns].sum() df.groupby('col_to_group')[df.iloc[:, :2:-1].columns].sum().iloc[:, ::-1]
结果:
col_3 col_4 col_to_group A 1.0 1.0 B 1.0 1.0
您可以通过多种方式实现:
只需选择部分列列表(切片运算符):
将列
'col_3'
的名称与iloc
一起使用:类似于列表选择,但有
iloc
:结果:
相关问题 更多 >
编程相关推荐