Python Pandas:聚合列的大子集,而不显式地键入ou

2024-09-29 21:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对我的数据帧进行聚合。问题是我需要按超过100列进行聚合。现在我把它们都打印出来了

df_grouped = df.groupby(['Column1'])['Column2','Column3','Column4','Column5'].sum()

直到最后一列。如果必须进行更改,则很难维护。有没有一种方法可以在不显式键入的情况下引用这些列?在


Tags: 数据方法df键入情况sumgroupbycolumn1
2条回答

可以按差异定义列:

df_grouped = df.groupby(['Column1'])[
    df.columns.difference(columns_to_exclude + ['Column1'])
].sum()

请注意,difference方法使用集合,因此列的顺序不能保证。在

如果您可以用条件选择所需的列,这里有一个超级简单的方法。我偶尔会使用这种方法,但不适用于100列以上的列,因此我不确定它对性能的影响。在

对于示例df:

df
   a   b   c  bb
0  1   4   4   4
1  2   5   5   5
2  7  87  87  87
3  5   6   6   6

使用列表理解:

^{pr2}$

这显然可以用于任何你喜欢的情况。在

df_grouped = df.groupby(['Column1'][[i for i in df.columns if 'b' in i]].sum()

用我的超级简单的例子,一些并排的表演:

%timeit df[[i for i in df.columns if 'b' in i]]
1000 loops, best of 3: 394 µs per loop

%timeit df[df.columns.difference(['a','c'])]
1000 loops, best of 3: 598 µs per loop

相关问题 更多 >

    热门问题