更改 Pandas 中特定单元格的日期格式

Posted

技术标签:

【中文标题】更改 Pandas 中特定单元格的日期格式【英文标题】:Change date format for specific cells in Pandas 【发布时间】:2020-07-20 20:17:09 【问题描述】:

我正在处理一个包含日期列的大型数据集(超过 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 的力量来避免这里的循环?

谢谢!

【问题讨论】:

【参考方案1】:

通过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')

【讨论】:

【参考方案2】:

试试

df['datetime'] = df['datetime'].apply(lambda x: x.to_datetime())

【讨论】:

以上是关于更改 Pandas 中特定单元格的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

特定 ISO 格式的 Pandas 日期时间转换

python怎么把日期格式调整为非文本格式?

在Excel里,日期为啥变成了数字

根据单元格的数字格式设置条件格式?

pandas设置excel单元格 日期 类型 分 秒

pandas.to_json 以特定形式输出日期格式