python - 更改 Pandas 中特定单元格的日期格式
问题描述
我正在使用一个包含日期列的大型数据集(超过 200 万行 x 10 列)。某些行的格式正确(例如 2020/04/08),但我想更改其他不正确的格式(具体而言,这些行的格式为 20200408)。
我想更改错误的格式,但我不想遍历所有行。
通常,对于一个小数据集,我会做
for i in range (0,len(df)):
cell=str(df.iloc[i]['date'])
if len(cell)==8:
df.iat[i, df.columns.get_loc('date')] = datetime.strptime(cell, '%Y%m%d').strftime('%Y-%m-%d')
但我知道这远非最佳。
如何使用 pandas 的力量来避免这里的循环?
谢谢!
解决方案
过滤行Series.str.len
,然后选择列DataFrame.loc
和掩码,转换为日期时间to_datetime
,最后转换为自定义格式Series.dt.strftime
:
m = df['date'].str.len() == 8
df.loc[m, 'date'] = pd.to_datetime(df.loc[m, 'date'], format='%Y%m%d').dt.strftime('%Y-%m-%d')
推荐阅读
- ruby-on-rails - 在 find_or_create 之前的 Rails before_validation
- r - 如何在不访问相同顶点/节点的情况下进行随机游走
- css - 如何以角度禁用模态的父页面
- playframework - 播放框架模板中scalajs方法中的用例类参数
- javascript - 为什么 toLocaleDateString 不能在 react-native (Android) 中工作?
- scala-gatling - 如何在 Gatling Simulation 中断言 couchbase 中的记录计数
- css - 打开 amp-sidebar 时如何启用滚动
- ios - 从 GameScene 调用 GameViewController 的函数
- javascript - 为 dom 操作编写代码时的最佳实践是什么?
- r - 减少 R 中功能性 PCA 的功能范围 - 功能性数据分析