python - 在没有循环的情况下更改数据框单元格的类型
问题描述
有时,数据不是我们希望的格式。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)。那么,我们该如何解决这个问题呢?
解决方案
您可以对 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
推荐阅读
- elasticsearch - Logstash 不读取日志文件但读取文本文件
- python-3.x - 无法在 API 端点显示 csv 文件输出
- php - Eloquent Count 嵌套关系
- c# - 反序列化自定义组件后如何执行代码?
- android - 如何使用默认的安卓主题?
- reactjs - 以编程方式导航离子反应
- python - 如何在 Gtk.Treeview 单元格中单击文本来扩展行?这是可能的?
- python-3.x - KeyError: 0 - 函数最初工作,但在其他数据上调用时返回错误
- java - 具有自定义接口的 Java 插件
- javascript - 需要 CA 证书的服务在 Android MSTeams 应用程序中不可用