【问题标题】:Converting month number to datetime in pandas在熊猫中将月份数转换为日期时间
【发布时间】:2019-02-26 14:17:45
【问题描述】:

如何将 Pandas 中的月份数字(浮点数)转换为日期时间,格式为 2010-01-01?

    date
0   1.0       
1   2.0       
2   3.0       
3   4.0       
4   5.0 

预期输出:

    date
0   2010-01-01       
1   2010-02-01      
2   2010-03-01      
3   2010-04-01       
4   2010-05-01

【问题讨论】:

  • 2010 年有什么特别的原因吗?这是你想要的其他东西吗?
  • 如果您知道您的年份是 2010 年,您可以先附加字符串。 df.date = pd.to_datetime('2010-' + df.date.astype(str), format = '%Y-%m')
  • 那一年我需要@Chris
  • 如何添加日期? @Vaishali
  • Pandas 默认假定日期为 1,否则您也可以将其连接起来。 pd.to_datetime('2010-' + df.date.astype(str) + '-1', 格式 = '%Y-%m')

标签: python pandas


【解决方案1】:

添加年份和月份并转换为日期时间

pd.to_datetime('2010-' + df.date.astype(int).astype(str) + '-1', format = '%Y-%m')

0   2010-01-01
1   2010-02-01
2   2010-03-01
3   2010-04-01
4   2010-05-01

【讨论】:

【解决方案2】:

一个简单的解决方案可以是将yearday 列添加到数据框中,然后调用pd.to_datetime(df)

df = df.assign(year=2010, day=1, month=lambda l: l.date.apply(np.int)).drop('date', axis=1)
df['date'] = pd.to_datetime(df)

df = df.drop(['year', 'month', 'day'], axis=1)

print(df)

        date
0 2010-01-01
1 2010-02-01
2 2010-03-01
3 2010-04-01
4 2010-05-01

【讨论】:

猜你喜欢
  • 2021-12-06
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2018-12-08
相关资源
最近更新 更多