pandas groupby将相同的功能应用于多列

艾琳

我有一个数据框,看起来像:

>>> df = pd.DataFrame({'id':[1,1,1,1,1,2,2,2],'month':[1,1,2,2,2,1,2,2],'value1':[1,1,3,3,5,6,7,7], 'value2': [9,10,11,12,12,14,15,15], 'others': range(8)})
>>> df

   id  month  value1  value2  others
0   1      1       1       9       0
1   1      1       1      10       1
2   1      2       3      11       2
3   1      2       3      12       3
4   1      2       5      12       4
5   2      1       6      14       5
6   2      2       7      15       6
7   2      2       7      15       7

我想做执行其输入是一系列的自定义功能value1value2

def get_most_common(srs):
    """
    Returns the most common value in a list. For ties, it returns whatever
    value collections.Counter.most_common(1) gives.
    """
    from collections import Counter

    x = list(srs)
    my_counter = Counter(x)
    most_common_value = my_counter.most_common(1)[0][0]

    return most_common_value

预期结果:

               value1    value2
   id  month   
   1      1       1       9
          2       3      12
   2      1       6      14
          2       7      15

该函数的编写方式是这样的,因为起初我只需要将其应用于value1如此df = df.groupby(['id,'month'])['value1'].apply(get_most_common)工作的单个列(现在,我必须将其同时应用于两列。

尝试次数:

  1. 应用

df = df.groupby(['id,'month'])[['value1','value2']].apply(get_most_common) 给:

id  month
1   1        value1
    2        value1
2   1        value1
    2        value1
  1. 转变

df = df.groupby(['id,'month'])[['value1','value2']].transform(get_most_common)

给这个

   value1  value2
0       1       9
1       1       9
2       3      12
3       3      12
4       3      12
5       6      14
6       7      15
7       7      15
  1. applymap 不起作用。

我在这里想念什么?

耶斯列尔

使用GroupBy.agg-它分别为每列运行功能:

df = df.groupby(['id','month'])['value1','value2'].agg(get_most_common)
print (df)
          value1  value2
id month                
1  1           1       9
   2           3      12
2  1           6      14
   2           7      15

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将功能应用于Pandas Groupby

Pandas DataFrame将功能应用于多列并输出多列

Pandas groupby汇总将多个功能应用于多个列

将ewm功能应用于Pandas groupby

pandas groupby应用于多个列以生成新列

pyspark相当于pandas groupby +应用于列

将 apply() 函数应用于 Pandas 中的多列?

将相同名称行的最后一个条目应用于Pandas中整个相同名称的行

Python Pandas Groupby变换/应用对多列进行操作的功能

如何将函数应用于多列以在 Pandas 中创建多列?

如何将自定义滚动功能应用于pandas groupby?

一次将多种功能应用于Pandas groupby对象

Pandas GroupBy-在保留原始顺序的同时将功能应用于每个组

Pandas groupby-将不同的功能应用于每个组中的一半记录

将函数应用于pandas groupby 数据框中的所有列

如何使用groupby将多个函数应用于Pandas中的多个列?

如何使用pandas Groupby将不同的聚合函数应用于同一列

将加权平均函数应用于pandas groupby对象中的列,但权重总和为零

将相同的功能集应用于具有相同列标题的多个数据框

R适用于列表列表以将相同功能应用于预定义列

Groupby用于选择多列Pandas python

Pandas Groupby Multiindex用于多列

Pandas 通过计算多列将函数应用于每一行

如何将函数应用于 Pandas 中的多个多索引列?

Python pandas 数据框将函数结果应用于多列,其中 NaN

使用 pd.loc 将函数应用于 pandas 数据帧的多行和多列

pandas DataFrame,如何将功能应用于特定列?

Pandas DataFrame将MultiIndex值的功能应用于或映射字典valueassign列

需要帮助将此功能应用于Pandas数据框列