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

标签 python pandas

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

相关文章:

python - 如何在一列上执行 pandas groupby 操作,但将另一列保留在生成的数据框中

python - 如何使用索引将 Pandas 数据框写入 sqlite

python - 一行异常处理

python - 引发错误的目的是什么?

python - 使用 Pandas 检查 2 个系列中的一对值的最有效方法?

python - 使用 Pandas 计算重叠时间范围的持续时间

python - 如何在不调用函数的情况下调用Python内置函数参数验证?

python - 组合序列化器和模型函数

python - 使用 Python 脚本在 Linux 中创建用户帐户时遇到问题

Python Pandas Drop 数据框