【问题标题】:How to change format after convert column into DateTime in Pandas如何在 Pandas 中将列转换为 DateTime 后更改格式
【发布时间】:2021-04-13 08:29:26
【问题描述】:

我有以下数据框,请参阅附加输出:

Currency    Date    Closing Price (USD) 24h Open (USD)  24h High (USD)  24h Low 
0   BTC 01/10/2013        123.65          124.30          124.75        122.56
1   BTC 02/10/2013        125.46          123.65          125.76        123.63
2   BTC 03/10/2013        108.58          125.46          125.67         83.33
3   BTC 04/10/2013        118.67          108.58          118.68        107.06
4   BTC 05/10/2013        121.34          118.67          121.94        118.01
... ... ... ... ... ... ...
273 BTC 08/04/2021       56508.94       58030.62        58645.77        55541.91
273 BTC 09/04/2021       57880.91       55996.08        58179.66        55758.49
273 BTC 10/04/2021       58171.91       58094.74        58880.82        57717.86
273 BTC 11/04/2021       59295.95       58149.65        61065.22        57924.08
273 BTC 12/04/2021       59822.90       59765.10        60588.47        59229.86

由于我需要提取月份并使用“日期”列数据进行分组,因此我将其转换为日期时间,请参见附加代码:

#datatime format
btc_df['Date'] = pd.to_datetime(btc_df['Date'])

完成此操作后,pandas 将日期列读取为 yyyy-dd-mm。这是一个问题,因为您可以想象数据没有得到正确处理。再次查看输出:

Currency    Date    Closing Price (USD) 24h Open (USD)  24h High (USD)  24h Low 
0   BTC 2013/01/10        123.65          124.30          124.75        122.56
1   BTC 2013/02/10        125.46          123.65          125.76        123.63
2   BTC 2013/03/10        108.58          125.46          125.67         83.33
3   BTC 2013/04/10        118.67          108.58          118.68        107.06
4   BTC 2013/05/10        121.34          118.67          121.94        118.01
... ... ... ... ... ... ...
273 BTC 2021/08/04       56508.94       58030.62        58645.77        55541.91
273 BTC 2021/09/04       57880.91       55996.08        58179.66        55758.49
273 BTC 2021/10/04       58171.91       58094.74        58880.82        57717.86
273 BTC 2021/11/04       59295.95       58149.65        61065.22        57924.08
273 BTC 2021/12/04       59822.90       59765.10        60588.47        59229.86

我已尝试使用以下代码来更改此问题:

btc_df['Date'] = btc_df['Date'].dt.strftime('%Y/%m/%d')

但是当我运行这段代码时,我得到了以下错误:

AttributeError: 只能使用带有 datetimelike 值的 .dt 访问器

谁能解释我为什么会得到这种日期格式以及如何解决它?我希望将我的所有数据正确分配给每天和每月,而不是像现在这样。

谢谢!

【问题讨论】:

  • 您输入的日期似乎是日-月-年格式。但是默认情况下,pd.to_datetime 将采用月-日-年。请参阅佩德罗的回答如何避免这种情况。

标签: python pandas datetime


【解决方案1】:

函数pd.to_datetime 可以接收参数format 以指定所需的日期格式:

btc_df['Date'] = pd.to_datetime(btc_df['Date'], format="%d/%m/%Y")

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html中的所有参数都可以查看

【讨论】:

  • 对于 OP 的输入,不需要设置特定的格式。相反,设置关键字dayfirst=True 就足够了。
  • 感谢@PedroGarcia 和@MrFuppes!似乎它正在工作。我的错误是在没有必要执行我的操作时尝试获取 yyyy-mm-dd 格式!!
猜你喜欢
  • 2016-09-08
  • 2015-01-02
相关资源
最近更新 更多