我想将以下代码转换为 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/