DataFrame列数据处理:移除值中.00后缀的方法
嘿,这个需求我之前也碰到过,用pandas就能轻松解决!下面给你两种实用的方法,你可以根据自己的习惯选~
方法一:正则表达式替换(简洁高效)
这种方法利用字符串替换结合正则表达式,精准匹配**末尾的".00"**并移除,不会影响其他带小数点的内容(比如5000.i)。
import pandas as pd # 先构造你的示例DataFrame df = pd.DataFrame({'target_col': [5000, 5000.00, '5000.i', 4000.00]}) # 第一步:把列统一转为字符串类型,确保数值和字符串能一起处理 df['target_col'] = df['target_col'].astype(str) # 第二步:用正则替换末尾的".00",regex=True启用正则模式 df['target_col'] = df['target_col'].str.replace(r'\.00$', '', regex=True) # 查看处理后的结果 print(df['target_col'])
代码解释:
astype(str):把列里的数值(比如5000、5000.00)和字符串(比如5000.i)统一转成字符串,避免类型不一致导致的问题。r'\.00$':正则表达式,\.匹配实际的小数点(避免被当作通配符),$表示匹配字符串的结尾,确保只替换末尾的".00",不会误伤其他内容。
方法二:条件判断处理(直观易懂)
如果你对正则不太熟悉,这种逐元素判断的方法更直白,逻辑清晰:
import pandas as pd df = pd.DataFrame({'target_col': [5000, 5000.00, '5000.i', 4000.00]}) # 定义一个清理后缀的函数 def remove_dot00(x): # 先转成字符串 x_str = str(x) # 判断是否以".00"结尾 if x_str.endswith('.00'): # 移除最后3个字符(即".00") return x_str[:-3] else: # 不符合条件就返回原内容 return x_str # 应用函数到目标列 df['target_col'] = df['target_col'].apply(remove_dot00) print(df['target_col'])
最终输出结果:
不管用哪种方法,处理后你都会得到:
0 5000 1 5000 2 5000.i 3 4000 Name: target_col, dtype: object
内容的提问来源于stack exchange,提问作者Karthik chengalvarayan
相关产品推荐
相关产品推荐

