【问题标题】:How to convert -99 value in datetime column to a date of my choosing? [duplicate]如何将 datetime 列中的 -99 值转换为我选择的日期? [复制]
【发布时间】:2021-08-15 20:13:39
【问题描述】:

我有一些数据:

ID Date
1 2021-05-01
2 2021-05-01
3 2021-05-01
4 -99
5 -99
6 2017-11-21
7 -99
8 2019-02-04
9 -99
10 -99

我有-99的地方,我想把它改成2021-05-20。我已经尝试过 if 语句,但它不起作用,仍然有 -99。我已经确定它是一个日期时间列,尽管考虑到 -99 不是一个日期时间值。也许这就是我要去错的地方?

df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')

if (df['Date'] is '-99'):
    df['Date'] = pd.Series(['2021-05-20' for x in range(len(df.index))])

我认为长度部分也是错误的,因为 -99 的数量没有数据行多。提前感谢您的帮助!

【问题讨论】:

标签: python pandas numpy datetime if-statement


【解决方案1】:

mask 选项:

df['Date'] = df['Date'].mask(df['Date'].eq('-99'), '2021-05-20')

np.where 选项:

df['Date'] = np.where(df['Date'].eq('-99'), '2021-05-20', df['Date'])

loc 选项:

df.loc[df['Date'].eq('-99'), 'Date'] = '2021-05-20'

replace 选项:

df['Date'] = df['Date'].replace({'-99': '2021-05-20'})

通过pd.to_datetime + fillna 转换为 DateTime 选项,归功于@Nk03

df['Date'] = (
    pd.to_datetime(df['Date'], errors='coerce').fillna(pd.to_datetime('2021-05-20'))
)

【讨论】:

  • 您可以再添加一个选项 - pd.to_datetime 和 'coerce',然后用所需的值填充 nan。 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多