首页 > 解决方案 > 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:“联系人”对象

我需要检查四个条件,并相应地删除字符串的开头

  1. 电话:858123456789(值的开头)=> 转换为=> 8123456789
  2. 电话:+858123456789 => 转换为 => 8123456789
  3. 电话:8123456789 => 转换为 => 8123456789
  4. 电话:+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

标签: pythonpandasdataframe

解决方案


df["contact"] = df.apply(lambda row: row["contact"].replace("tel", "").replace(":", "").replace("+", ""), axis=1)

这只是明确的一种方式。您也可以尝试使用正则表达式。


推荐阅读