【问题标题】:Calculate some values for each group of columns in Python with Pandas使用 Pandas 计算 Python 中每组列的一些值
【发布时间】:2018-10-28 19:53:02
【问题描述】:

我有一个数据框

输入

         A   B   C     D          
0      one  50   35  1.5  
1      two  30   40  2.0 
2      one  50   35  3.0 
3    three  40   35  3.5 
4      one  40   35  2.5

我需要在 D 列上应用一个数学函数并用它填充一个新的 E 列,但在我需要对 B 列和 C 列进行分组之前。例如,数学函数将应用于值 1.5 和 3.0 的情侣(50 ,35)

B   C   A     D
50  35  one   1.5
        one   3.0

40  35  three 3.5
        one   2.5

30  40  two   2.0

这些值是使用自定义函数计算的,该函数在输入中接收一个 numpy 数组并输出一个具有相同长度的数组。

输出

         A   B   C     D   E          
0      one  50   35  1.5   4.5
1      two  30   40  2.0   4.5
2      one  50   35  3.0   3.5
3    three  40   35  3.5   6.8
4      one  40   35  2.5.  8.9

有人可以帮我吗?

【问题讨论】:

    标签: python arrays pandas dataframe grouping


    【解决方案1】:

    我认为需要GroupBy.transform 以返回与原始DataFrame 相同大小的Series

    def func(x):
        print (x)
        #custom function, e.g. multiple all together 
        return x.prod()
    
    df['E'] = df.groupby(['B','C'])['D'].transform(func)
    print (df)
           A   B   C    D   E
    0    one  50  35  1.5  4.50
    1    two  30  40  2.0  2.00
    2    one  50  35  3.0  4.50
    3  three  40  35  3.5  8.75
    4    one  40  35  2.5  8.75
    

    【讨论】:

    • @Ami Tavory - 谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2017-02-22
    相关资源
    最近更新 更多