【问题标题】:How to handle missing value datetime64[ns] dtype column for Python Pandas DataFrame?如何处理 Python Pandas DataFrame 的缺失值 datetime64[ns] dtype 列?
【发布时间】:2020-07-29 16:47:24
【问题描述】:

如果我有类似这样的数据,“Date4”列中的缺失值,它是 datetime64[ns] dtype。

  • 在这种情况下如何处理缺失值?
  • 如果我想用 most_frequent 日期填充它怎么办?

我在几个网站上搜索了解决方案,但还没有得到正确的答案。

   No  Name      Date1      Date2      Date3      Date4
0   1  Per1 2015-05-25 2016-03-20 2016-03-22 2017-01-01
1   2  Per2 2015-06-26 2016-05-22 2016-06-22 2017-02-02
2   3  Per3 2015-09-28 2016-07-24 2016-07-26 2017-05-22
3   4  Per4 2015-11-21 2016-09-02 2016-05-09 2017-05-22
4   5  Per5 2015-12-25 2016-11-11 2016-11-14        NaT

【问题讨论】:

  • 不要发布数据图片,以文本形式发布示例数据

标签: python pandas dataframe datetime64


【解决方案1】:
In [135]: df
Out[135]:
       Date4
0 2017-01-01
1 2017-02-02
2 2017-05-22
3 2017-05-22
4        NaT

In [136]: df["Date4"].replace(np.nan, df["Date4"].mode().iloc[0])
Out[136]:
0   2017-01-01
1   2017-02-02
2   2017-05-22
3   2017-05-22
4   2017-05-22
Name: Date4, dtype: datetime64[ns]

【讨论】:

  • 非常感谢。我正在尝试使用 fillna 方法: df['Date4'] = df['Date4'].fillna(df["Date4"].mode()) 像这样。但我没有使用 .iloc[0],这是错误的,我从你的代码中得到了解决方案。现在 fillna 也像这样工作: df['Date4'] = df['Date4'].fillna(df["Date4"].mode().iloc[0]) 。非常感谢。
  • 您能否建议我们可以使用哪些其他方法来填充 datetime[ns] 数据类型中的缺失值?
  • 有多种方法,如 bfill、ffill,但主要取决于您处理的数据
【解决方案2】:

你刚才描述的叫做Imputation。 Sklearn 的SimpleImputer() 做得很好。您甚至可以指定如何填充缺失值。

imp=SimpleImputer(missing_values=np.nan, strategy = 'most_frequent')
df=pd.DataFrame(imp.fit_transform(df))

【讨论】:

  • SimpleImputer 不支持 datetime64[ns] 数据类型。否则大多数情况下我只使用 SimpleImputer。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2022-08-15
  • 2019-12-12
相关资源
最近更新 更多