【问题标题】:preserve dates whilst applying pandas to_numeric function在应用 pandas to_numeric 函数时保留日期
【发布时间】:2020-07-29 22:14:08
【问题描述】:

我正在尝试使用 pd.to_numeric 将 pandas 数据框中的数据设置为数字,但是当我运行代码时,日期时间日期会被 NaN 覆盖。

初始数据:

           Header1       Header2      Header3      Header4
Row1     01-01-2020   15-01-2020   01-02-2020   15-02-2020
Row2          123           456         789           246
Row3          321           654         987           642
Row4          123           456         789           246

结果:

           Header1       Header2      Header3      Header4
Row1           NaN           NaN         NaN           NaN
Row2          123           456         789           246
Row3          321           654         987           642
Row4          123           456         789           246

如何有选择地使用 pd.to_numeric 将数据转换为数字,但保留已经存在的 datetime 日期?干杯

【问题讨论】:

  • 日期是列吗?
  • @YOBEN_S:不,日期是数据的一部分,它是第一(顶)行。
  • 如果输入是00123 而不是123,你会得到什么结果?
  • 日期不应在数据部分,而应在第一列。如果您将它们留在数据中,任何进一步的处理都会很复杂。警告购买者...
  • @Serge:谢谢,但这只是代表我的更大数据集的示例数据,它具有不同的标题并包含一些日期。我无法更改正在使用的数据集。

标签: python pandas


【解决方案1】:

您可以在pd.to_numeric 中使用标志errors='ignore'。这是一个例子:

import datetime
import pandas as pd 

date = datetime.datetime(2020, 2, 3, 14, 15)
df = pd.DataFrame(data=['01-01-2020', date, '1.0', '2', -3])

df[0] = pd.to_numeric(df[0], errors='ignore')

输出将是:

                     0
0           01-01-2020
1  2020-02-03 14:15:00
2                  1.0
3                    2
4                   -3

但是,忽略错误时应该小心。如果可能的话,我建议将datetime 列分开。

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 2018-07-10
    • 2017-08-10
    • 2021-11-10
    • 2017-07-20
    • 2016-08-17
    • 1970-01-01
    • 2018-11-19
    • 2020-01-18
    相关资源
    最近更新 更多