【问题标题】:python pandas apply how to replace function with lambda function?python pandas应用如何用lambda函数替换函数?
【发布时间】:2020-04-16 14:48:18
【问题描述】:

我有一个数据框和我想应用的函数:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({
...         'A' : ['A1', 'A2', 'A3'],
...         'B' : ['B1', 'B2', 'B3'],
...         'format_str' : [None, np.nan, 'A = {A}, B = {B}']
...     }
... )
>>> df
    A   B        format_str
0  A1  B1              None
1  A2  B2               NaN
2  A3  B3  A = {A}, B = {B}
>>> def gen_format_str(ser):
...     if pd.isna(ser.format_str):
...         return ser.A
...     else:
... #         return ser.format_str.format(A = ser.A, B=ser.B)
...         return ser.format_str.format(**ser)
...
>>> df['new_field'] = df.apply(
...             gen_format_str, axis=1
... )
>>> df
    A   B        format_str       new_field
0  A1  B1              None              A1
1  A2  B2               NaN              A2
2  A3  B3  A = {A}, B = {B}  A = A3, B = B3
>>>

一切正常,但我想使用 lambda 函数而不是 gen_format_str。 我尝试了不同的方法,但都没有奏效。

如何在apply方法中使用lambda函数实现与gen_format_str相同的功能?

问候。

【问题讨论】:

    标签: python-3.x pandas lambda apply


    【解决方案1】:

    这似乎在做这项工作:

    df['new_field'] = df.apply(
        lambda ser: ser.A if pd.isna(ser.format_str) else ser.format_str.format(**ser),  
        axis=1  
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-02
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多