【问题标题】:Changing type of Data Frame cells without loop在没有循环的情况下更改数据框单元格的类型
【发布时间】:2021-02-24 03:12:58
【问题描述】:

有时,数据不是我们希望的格式。 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/stable/reference/api/pandas.DataFrame.iterrows.html)。那么,我们该如何解决这个问题呢?

【问题讨论】:

  • df['A'] = df['A'].dt.floor('D').

标签: python pandas dataframe datetime


【解决方案1】:

您可以使用.dt accessor Series 值的类似日期时间的属性

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

【讨论】:

  • 你的回答很好,但实际上我正在寻找更一般的东西。例如,如果数据是字符串怎么办?是否有我们可以使用的访问器的详尽列表?
  • 在这种情况下,您需要先将列转换为日期时间。 pd.to_datetime(df.A).dt.date.
猜你喜欢
  • 2019-10-02
  • 2018-11-02
  • 2012-09-26
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多