gpt4 book ai didi

python - 如何使用lambda python函数来使用map,如下所示?

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:53 24 4
gpt4 key购买 nike

我想将以下代码转换为 lambda 表达式-

for i in col_headers:
df_temp[i] = df[i].map({"yes":i, "no":"-"})

我尝试使用以下代码,但失败了。

df_temp = df[].map({"yes":(lambda x: x, df.columns.to_list()), "no":"-"} ) 

这是样本数据和输出。

data = ({'Id':[1,2,3,4,5],
'A':['yes', 'no', 'yes', 'yes', 'no'],
'B':['yes', 'no', 'yes', 'no', 'yes'],
'C':['no', 'no', 'yes', 'yes', 'no'],
'D':['no', 'yes', 'no', 'no', 'yes']})

df = pd.DataFrame(data = data)
df.set_index(["Id"], inplace = True, drop = True)

for i in df.columns.to_list():
df_temp[i] = df[i].map({"yes":i, "no":"-"})
df_temp

df_temp 是我想要的输出,但使用 lambda 函数。

你能解释一下我的逻辑哪里出了问题吗?

最佳答案

您可以将 lambda 与 applywhitout for 循环一起使用:

df.apply(lambda x: np.where(x.apply(lambda x: '-'  if x=='no' else x)==x,x.name,x.apply(lambda x: '-'  if x=='no' else x)))

输出:

df
A B C D
Id
1 A B - -
2 - - - D
3 A B C -
4 A - C -
5 - B - D

关于python - 如何使用lambda python函数来使用map,如下所示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57910598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com