首页 > 解决方案 > 在没有循环的情况下更改数据框单元格的类型

问题描述

有时,数据不是我们希望的格式。Python 提供了处理这个问题的方法(例如 int() 和 str()),但 Data Frames 的解决方案并非易事。

例如,让我们生成一个包含 5 个日期时间观察的数据框:

import pandas
from datetime import datetime

datelist = pd.date_range(datetime.today(), periods=5).tolist()
df = pd.DataFrame (datelist, columns = ['A'])

在此处输入图像描述

我们的目标是将此日期时间数据转换为日期格式。

首先,我们可以尝试

df['A'] = df['A'].datetime.date()

我们将得到一个属性错误:“系列”对象没有属性“日期”。那么,一个选项是创建一个循环来一次更改每个单元格,但是,根据 Pandas 文档,我们永远不应该更改我们正在迭代的内容(https://pandas.pydata.org/pandas-docs/稳定/参考/api/pandas.DataFrame.iterrows.html)。那么,我们该如何解决这个问题呢?

标签: pythonpandasdataframedatetime

解决方案


您可以对 Series 值的 datetimelike 属性使用.dt访问器

df.A.dt.date

# 0    2021-02-23
# 1    2021-02-24
# 2    2021-02-25
# 3    2021-02-26
# 4    2021-02-27
# Name: A, dtype: object

推荐阅读