python - 如何将 lambda 函数应用于多列

标签 python pandas lambda

我有一个数据框,需要将相同的 lambda 函数应用于多个列。

示例数据:

col1                    col2                  col3 
xxx;#2;yyy              zzz;#46;zyzcz        1
aaa;#3;bbbccc           bbbb;cccc;dd#5        2

我需要清理,结果应如下:

col1                    col2                  col3 
xxx;yyy                 zzz;zyzcz             1
aaa;bbbccc              bbbb;cccc;dd          2

我使用的功能:

def cleanDigit(row):
    replacements = [('\d', ''), ('#', ''), (';;', ';')]

    for (old, new) in replacements: 
        row = re.sub(old, new, row)

    return row

将函数应用于多列的代码:

df[['col1', 'col2']] = df[['col1', 'col2']] .apply(lambda r: cleanDigit(r))

错误消息:

TypeError: ('expected string or buffer', u'occurred at index col1')

最佳答案

使用DataFrame.applymap ,lambda 函数也应该省略并仅传递函数:

df[['col1', 'col2']] = df[['col1', 'col2']].applymap(cleanDigit)
print (df)
         col1          col2  col3
0     xxx;yyy     zzz;zyzcz     1
1  aaa;bbbccc  bbbb;cccc;dd     2

关于python - 如何将 lambda 函数应用于多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57520224/

相关文章:

python - 我如何量化 Pandas 中的数据?

c# - 获取在 .NET 3.5 中的 Lambda 表达式中使用的属性名称

c# - C# 中匿名 lambda 函数的 C++ 捕获子句等效项

python - 在 Numpy 1.6.1 中将 float32 数组转换为 datetime64

python - 计算CSV文件中每n行的平均值

python-tk 有未满足的依赖关系

python - 从多个列中获取最近的观察和日期

python - 在 Tkinter 中动态创建菜单。 ( lambda 表达式?)

python - 如何在没有列名的情况下更改 pandas 中的列类型?

javascript - 使用 Flask 和 jQuery 上传文件