【问题标题】:Multiple dates in a pandas column熊猫列中的多个日期
【发布时间】:2021-04-10 04:54:47
【问题描述】:

我正在尝试使 Pandas DataFrame 中的日期都具有相同的格式。目前我有 DataFrame 以两种格式存储日期。

“2017 年 6 月 8 日凌晨 2:15:00”和 2016-01-01T00:05:00

存储这些日期的列名是 INTERVAL_END。可以看到,其中一个日期是字符串,另一个是格式化日期。

我已尝试根据他们当前使用的日期来格式化日期:

df['format'] = 1
df.loc[df.INTERVAL_END.str.contains('/', na=False), 'format'] = 2

df.loc[df.format == 1, 'time'] = pd.to_datetime(df.loc[df.format == 1, 'INTERVAL_END'], format = '%Y-%m-%d %H:%M:%S').dt.strftime('%Y-%m-%d')
df.loc[df.format == 2, 'time'] = pd.to_datetime(df.loc[df.format == 2, 'INTERVAL_END'], format = '%d/%m/%Y %H:%M:%S %p').dt.strftime('%Y-%m-%d')

任何帮助都将非常感谢!

【问题讨论】:

  • 您的意思是某些日期实际上在数据框本身中有引号吗?或者你只是在这里添加了引号?
  • 有些元素实际上在DataFrame中有引号。

标签: python pandas datetime


【解决方案1】:

在转换to_datetime() 之前,您应该可以只使用.str.strip('"') 列。

玩具示例:

df = pd.DataFrame({'INTERVAL_END': ['"6/08/2017 2:15:00 AM"', '2016-01-01T00:05:00']})

#                INTERVAL_END
# 0    "6/08/2017 2:15:00 AM"
# 1       2016-01-01T00:05:00

然后转换剥离的列to_datetime()

df.INTERVAL_END = pd.to_datetime(df.INTERVAL_END.str.strip('"'))

#                INTERVAL_END
# 0 2017-06-08 02:15:00+00:00
# 1 2016-01-01 00:05:00+00:00

【讨论】:

  • 啊,是的,它做到了。干杯!
猜你喜欢
  • 2019-11-28
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多