如何替换Pandas DataFrame列值并将日期列转换为整数格式?
嘿,我来帮你搞定这两个Pandas数据处理的问题,都是日常干活经常碰到的场景,直接上实用方案:
1. 如何替换Pandas DataFrame中某一列的数值?
这个需求分好几种情况,我给你列最常用的几种:
- 替换单个特定值
比如你想把列score里的所有0都换成90,直接用replace方法就行:
df['score'] = df['score'].replace(0, 90)
如果要同时操作多列或者更明确指定列,也可以用字典映射的写法,加inplace=True就能直接修改原DataFrame:
df.replace({'score': {0: 90}}, inplace=True)
- 替换多个不同的值
比如列status里的'待审核'要换成0,'已通过'换成1,用字典映射最直观:
df['status'] = df['status'].replace({'待审核': 0, '已通过': 1})
也可以用两个列表对应替换,适合值比较多的场景:
df['status'] = df['status'].replace(['待审核', '已通过', '已驳回'], [0, 1, 2])
- 基于条件替换特定值
比如列age里大于60的值都标记为'老年',其他为'成年',用loc或者numpy.where都可以:
用loc的写法:
df.loc[df['age'] > 60, 'age'] = '老年' df.loc[df['age'] <= 60, 'age'] = '成年'
用numpy.where更简洁(记得先导入numpy):
import numpy as np df['age'] = np.where(df['age'] > 60, '老年', '成年')
2. 将DataFrame的date列(字符串格式日期)转为整数格式(如20180201)
你的date列是'2018-02-01'这种标准字符串格式,有两种高效方法:
- 方法一:先转datetime再格式化(兼容性更强)
如果你的date列可能存在不标准的日期格式,先转成datetime类型再处理更稳妥:
import pandas as pd # 第一步:把字符串转为datetime类型(如果还没转的话) df['date'] = pd.to_datetime(df['date']) # 第二步:格式化为无分隔符的字符串,再转成整数 df['date_int'] = df['date'].dt.strftime('%Y%m%d').astype(int)
要是不需要保留原date列,直接覆盖就行:df['date'] = df['date'].dt.strftime('%Y%m%d').astype(int)
- 方法二:直接字符串替换(速度更快)
如果你的date列已经是严格的'YYYY-MM-DD'格式,直接去掉横杠再转整数,比转datetime快不少,适合大数据量:
df['date_int'] = df['date'].str.replace('-', '').astype(int)
内容的提问来源于stack exchange,提问作者Maphanew Kim
相关产品推荐
相关产品推荐

