【问题标题】:Date and Time Format Conversion in Pandas, PythonPandas、Python 中的日期和时间格式转换
【发布时间】:2022-01-09 16:57:29
【问题描述】:

最初,我的数据框有一个 Month 列,其中包含代表月份的数字。

Month
1
2
3
4

我输入了df["Month"] = pd.to_datetime(df["Month"]),我得到了这个...

Month
970-01-01 00:00:00.0000000001
1970-01-01 00:00:00.000000002
1970-01-01 00:00:00.000000003
1970-01-01 00:00:00.000000004

我只想保留日期而不是时间。有什么解决办法吗?

【问题讨论】:

  • 您输入的日期时间信息似乎不完整,不适合转换为绝对时间?这几个月是不是起源?
  • “月份”列具有字面意义上的整数,例如上面的整数。如果 origin 是指原始数据集,那么是的。
  • "我想只保留日期" - 对于一个日期,您还需要至少一年,可能还需要一天,那你怎么办期望那些?
  • @MrFuppes 我为行和列编写了这个命令,pd.set_option('display.max_rows', None)。不知何故,数据集并未显示所有行。当我绘制它时,我看到日期范围从 1968-11968-71969-11969- 7 . . . .直到 1972-1
  • 我不明白,从你的例子中我假设你有一列只有一个数字,代表一个月。你能澄清一下吗?可以使示例成为有效的minimal reproducible example

标签: python pandas dataframe datetime


【解决方案1】:

使用 df['Month'].dt.date 从列中获取日期

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

to_datetime 中使用format='%m'

df["Month"] = pd.to_datetime(df["Month"], format='%m') 
print (df)
       Month
0 1900-01-01
1 1900-02-01
2 1900-03-01
3 1900-04-01 

【讨论】:

  • 试过了,它返回的输出和我上面的一样。
  • @Qas - 比如1970-01-01 00:00:00.000000002?你确定吗?
  • 是的,还是那样。
  • @Qas - 不要忘记, format='%m'?如果不是,你的 pandas 版本是什么?
  • 是的,我没有忘记 :D 我写了你上面提到的确切代码,但仍然得到同样的东西。
猜你喜欢
  • 2021-10-22
  • 1970-01-01
  • 2012-03-27
  • 2019-04-27
  • 2023-01-24
  • 2016-01-27
  • 2023-03-10
  • 2021-07-18
相关资源
最近更新 更多