【问题标题】:pandas fillna date from another column熊猫从另一列填写日期
【发布时间】:2016-10-06 14:59:49
【问题描述】:

获取我的测试数据:

 import pandas as pd

 df =    {'Id': {1762056: 2.0, 1762055: 1.0},
'FillDate': {1762056: Timestamp('2015-08-01 00:00:00'), 1762055:Timestamp('2015-08-01 00:00:00')}, 
 'Date': {1762056: nan, 1762055: nan}, 
 }

df = pd.DataFrame(df)

数据如下:

        Id         Date        FillDate
        1.0      NaN         2015-08-01
        2.0      NaN         2015-08-01

所以要填补缺失的日期,我会这样做:

df['Date'].fillna(df['FillDate'], inplace=True)

这给了我

         Id    Date                  FillDate
        1.0  1438387200000000000  2015-08-01
        2.0  1438387200000000000  2015-08-01

如何以日期形式获取Date

【问题讨论】:

  • 使用pd.to_datetime()

标签: python date datetime pandas data-manipulation


【解决方案1】:

这行得通:

 df['Date'].fillna(pd.to_datetime(df['FillDate']).dt.date, inplace=True)

给了

      Id    Date       FillDate
      1.0  2015-08-01  2015-08-01
      2.0  2015-08-01  2015-08-01

【讨论】:

  • 你用的是什么版本的熊猫?这适用于0.19.0 看起来你的dtype 仍然是数字所以它将datetime 转换为ns 值,dt.date 也不应该是必需的,默认情况下,如果设置了时间组件,则不会显示到00:00 即空白
  • pandas==0.18.1
  • 我在发布问题之前尝试不使用dt.date,但没有成功
  • 我认为这是一个错误,已在最新的熊猫中修复
  • 好的,你能显示df.info()df['Date'].fillna(df['FillDate'], inplace=True)显示的内容吗,可能是np.float64
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 2022-07-14
  • 2016-12-23
相关资源
最近更新 更多