如何移除DataFrame列中的"_months"后缀并仅保留数字?
移除date列中的"_months"后缀,保留数字部分的方法
下面分两种常见场景给出解决方案:
纯Python字典处理
如果你的df是原生Python字典,可以通过列表推导式配合字符串操作实现:
方法1:使用replace直接替换后缀
df = {'name' : ['maman','tata','papa','uncle'], 'date' : ['6_months','4_months','2_months', '2_months'], 'amount' : [2000 , 600 , 500 , 100 ]} # 替换掉所有"_months"后缀 df['date'] = [x.replace('_months', '') for x in df['date']]
方法2:使用split分割字符串取前缀
如果后续可能出现类似"_weeks"这类不同后缀,用分割的方式更灵活:
df['date'] = [x.split('_')[0] for x in df['date']]
如果需要将结果转为整数类型,只需在操作中加入int()转换:
df['date'] = [int(x.split('_')[0]) for x in df['date']]
Pandas DataFrame处理
如果你的df是Pandas DataFrame(数据分析场景下更常见),可以利用Pandas的字符串方法快速处理整列:
方法1:str.replace批量替换
import pandas as pd df = pd.DataFrame({'name' : ['maman','tata','papa','uncle'], 'date' : ['6_months','4_months','2_months', '2_months'], 'amount' : [2000 , 600 , 500 , 100 ]}) # 替换后缀,结果为字符串类型 df['date'] = df['date'].str.replace('_months', '', regex=False) # 直接转为整数类型 df['date'] = df['date'].str.replace('_months', '', regex=False).astype(int)
方法2:str.split分割取前缀
# 取分割后的第一个元素,结果为字符串类型 df['date'] = df['date'].str.split('_').str[0] # 转为整数类型 df['date'] = df['date'].str.split('_').str[0].astype(int)
内容的提问来源于stack exchange,提问作者Kouakou
相关产品推荐
相关产品推荐

