python - Pandas - 来自具有多个(如果)条件的单列的数据框编辑字符串
问题描述
我有一个关注数据框,我想根据多个条件编辑“联系人”列。
start_date contact price shop
2020-07-14 tel:858123456789 100.0 s1
2020-07-15 tel:+858123456789 100.0 s1
2020-07-16 tel:8123456789 50.0 s2
2020-07-17 tel:+8123456789 150.0 s3
dtype:“联系人”对象
我需要检查四个条件,并相应地删除字符串的开头
- 电话:858123456789(值的开头)=> 转换为=> 8123456789
- 电话:+858123456789 => 转换为 => 8123456789
- 电话:8123456789 => 转换为 => 8123456789
- 电话:+8123456789 => 转换为 => 8123456789
我尝试使用“for index in df_total.index:”,逐行迭代。当我有 1000 万行要检查时,它可以工作,但需要很长时间。
您能否提出一个性能更好的解决方案?
start_date contact price shop
2020-07-14 8123456789 100.0 s1
2020-07-15 8123456789 100.0 s1
2020-07-16 8123456789 50.0 s2
2020-07-17 8123456789 150.0 s3
解决方案
df["contact"] = df.apply(lambda row: row["contact"].replace("tel", "").replace(":", "").replace("+", ""), axis=1)
这只是明确的一种方式。您也可以尝试使用正则表达式。