【问题标题】:What should be the code for lambda function? [duplicate]lambda 函数的代码应该是什么? [复制]
【发布时间】:2022-12-07 23:52:23
【问题描述】:

这是数据框的python代码

from pandas import DataFrame
import pandas as pd
names = {'First_name': ['Hanah', 'Ria', 'Jay', 'Bholu', 'Sachin'],
'Status':['Hanah', 'Ria', 'Jay', 'Bholu', 'Sachin'],
"charge":[10,11,12,13,14]}
df = pd.DataFrame(names)

这是用于生成输出的 lambda 函数

df['Status'] = df['First_name'].apply(lambda x: [df["charge"]] if x == 'Ria' else 'Not Found')
print(df)

生成的输出是这样的:

df['Status'] = df['First_name'].apply(lambda x: [df["charge"]] if x == 'Ria' else 'Not Found')
print(df)

输出是

  First_name                  Status  charge
0      Hanah               Not Found      10
1        Ria  [[10, 11, 12, 13, 14]]      11
2        Jay               Not Found      12
3      Bholu               Not Found      13
4     Sachin               Not Found      14

但我想生成输出

  First_name                  Status  charge
0      Hanah               Not Found      10
1        Ria                      11      11
2        Jay               Not Found      12
3      Bholu               Not Found      13
4     Sachin               Not Found      14

所以在第二行是 Ria 所以我必须在第二行中获取 charge(column) 的结果并将其放入 status(column)

【问题讨论】:

  • df['Status'] = df['charge'].where(df['Status'].eq('Ria'), 'Not Found')

标签: python pandas dataframe lambda apply


【解决方案1】:

lambda 可以用来代替 def 函数 First_name 状态费用 0 未找到哈娜 10 1 利雅 11 11 2 找不到周杰伦 12 3 未找到 Bholu 13 4 未找到萨钦 14 可以使用 def 轻松连接此表

【讨论】:

  • 我不明白你能分享代码吗
【解决方案2】:

如果你想使用apply和lambda func,使用axis=1将lambda func应用于所有数据框

df['Status'] = df.apply(lambda x: x['charge'] if x['First_name'] == 'Ria' else 'Not Found', axis=1)

df

    First_name  Status  charge
0   Hanah       Not Found   10
1   Ria         11          11
2   Jay         Not Found   12
3   Bholu       Not Found   13
4   Sachin      Not Found   14

但我们可以使用mask代替apply

cond1 = df['First_name'].ne('Ria')
df.assign(Status=df['charge'].mask(cond1, 'Not Found'))

结果:

    First_name  Status  charge
0   Hanah       Not Found   10
1   Ria         11          11
2   Jay         Not Found   12
3   Bholu       Not Found   13
4   Sachin      Not Found   14

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2016-11-19
    • 2014-08-18
    • 2019-08-13
    • 2015-01-12
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多