【问题标题】:Apply function to different columns in pandas将函数应用于熊猫中的不同列
【发布时间】:2017-04-20 02:37:52
【问题描述】:

我有一个令人费解的案例,我的数据框是这样的

  id    high low medium count
0  0     0    4    8     12
1  1     5    2    1      8

我想为每个级别生成 3 个额外的列:高、中低。

我定义了一个函数

def foo(row['high']):
    return  (1/3+row['high']/(1+row['count']))

我想我需要应用此函数 3 次,并更改 row['high']、row['low'] 和 row['medium']。

我用过类似的东西

df = df.apply(foo,axis=1)

但是,它不起作用。我想知道是否有一个好的方法(也许我可以只应用一次这个函数?)来做到这一点......

【问题讨论】:

    标签: python pandas apply


    【解决方案1】:

    您不能定义具有索引变量作为参数名称的函数。改变这个:

    def foo(row['high']):
    

    到这里:

    def foo(row):
    

    但是,对于您正在做的事情,您不需要应用函数。可以通过对列的操作来完成。

    (1/3)+df['high']/(1+df['count'])
    
    # returns:
    0    0.333333
    1    0.888889
    dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2019-03-05
      • 2021-02-12
      相关资源
      最近更新 更多