gpt4 book ai didi

Python pandas 与 lambda 应用难度

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

我正在运行以下函数,但不知何故努力让它考虑长度条件(if 部分)。如果该函数仅运行第一部分:

stringDataFrame.apply(lambda x: x.str.replace(r'[^0-9]', '') if (len(x) >= 7) else x)

出于某种原因,它只运行 x.str.replace(r'[^0-9]', '') 部分,我在这里做错了什么,我被卡住了。

最佳答案

当您需要单独处理每个值时,可以使用 applymap,因为 apply 适用于所有列(系列)。

然后不要使用 str.replace ,而是使用 re.sub ,它对正则表达式效果更好:

print (stringDataFrame.applymap(lambda x: re.sub(r'[^0-9]', '', x) if (len(x) >= 7) else x))

示例:

import pandas as pd
import re

stringDataFrame = pd.DataFrame({'A':['gdgdg454dgd','147ooo2', '123ss45678'],
'B':['gdgdg454dgd','x142', '12345678a'],
'C':['gdgdg454dgd','xx142', '12567dd8']})

print (stringDataFrame)
A B C
0 gdgdg454dgd gdgdg454dgd gdgdg454dgd
1 147ooo2 x142 xx142
2 123ss45678 12345678a 12567dd8

print (stringDataFrame.applymap(lambda x: re.sub(r'[^0-9]', '', x) if (len(x) >= 7) else x))
A B C
0 454 454 454
1 1472 x142 xx142
2 12345678 12345678 125678

关于Python pandas 与 lambda 应用难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994408/

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