【问题标题】:Auto generation of apply functions in python在 python 中自动生成应用函数
【发布时间】:2020-05-14 14:01:11
【问题描述】:

我想创建一个函数,给定字典将能够生成用于应用的函数,例如:

df = pd.DataFrame({"A" : [1,2,3,4],
                   "B" : [4,5,6,7]})

这是一个熊猫数据框。

我想创建 2 个新列:“D”和“E”。如果 A

df_result = pd.DataFrame({"A" : [1, 2, 3, 4],
                          "B" : [4, 5, 6, 7], 

                          "D" : [0, 0, 0.5, 1],
                          "E" : [0, 0, 1, 1]
})

通常我会使用 2 个不同的函数,例如:

f_a = lambda x : 0 if x <=2 else (0.5 if x == 3 else 1)

f_b = lambda x : 0 if x <=5 else 1

然后我会使用类似的东西:

df["D"] = df["A"].apply(f_a)
df["E"] = df["B"].apply(f_b)

有一种方法可以创建一个函数,该函数将在给定字典的情况下返回 f_a 之类的 lambda 函数:

{ "0" : 2,
  "0.5" : 3,
  "1" : 4}

谢谢

【问题讨论】:

    标签: python pandas function autogeneratecolumn


    【解决方案1】:

    您可以使用布尔运算符或np.where/np.select:

    df['E'] = df['B'].gt(5).astype(int)
    # eqivalently
    # df['E'] = np.where(df['B'] <= 5, 0, 1)
    
    df['D'] = np.select( (df['A']<= 2, df['A'] ==3), (0, 0.5), 1)
    

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      相关资源
      最近更新 更多