python - 在 pandas 中使用混合日期时间格式

标签 python pandas datetime

我将一个文件读入 pandas 数据帧,其中日期的格式各不相同:

  • 美国人:YYYY-MM-DD

  • 或欧洲:DD.MM.YYYY

它们以字符串形式出现。我想将它们全部格式化为日期对象,所以 pandas.Series.dt可以使用它们,并且最好采用第二种格式 ( DD.MM.YYYY )。

pandas.Series.dt对一栏中的两种不同拼写感到困惑。

最佳答案

使用to_datetime分别使用两种格式,因此如果格式不匹配,则会获取缺失值,因此对于新列,请使用 Series.fillna :

df = pd.DataFrame({'date': ['2000-01-12', '2015-01-23', '20.12.2015', '31.12.2009']}) 
print (df)
         date
0  2000-01-12
1  2015-01-23
2  20.12.2015
3  31.12.2009

date1 = pd.to_datetime(df['date'], errors='coerce', format='%Y-%m-%d')
date2 = pd.to_datetime(df['date'], errors='coerce', format='%d.%m.%Y')
df['date'] = date1.fillna(date2)
print (df)
        date
0 2000-01-12
1 2015-01-23
2 2015-12-20
3 2009-12-31

and ideally have them in the second format

python/pandas 中日期时间的格式默认为 YYYY-MM-DD,如果需要自定义格式也是可以的,但值会转换为字符串,因此 datetimelike 函数失败:

df['date'] = df['date'].dt.strftime('%d.%m.%Y')
print (df)
         date
0  12.01.2000
1  23.01.2015
2  20.12.2015
3  31.12.2009

print (type(df.loc[0, 'date']))
<class 'str'>

关于python - 在 pandas 中使用混合日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60390709/

相关文章:

ruby - 在 ruby 中以秒为单位转换时间

python - pandas 数据系列的矢量化标准差计算

python - 如何在 Windows 7 上使用 python 创建 RAS 电话簿条目?

基于多列的 Pandas 排名

python Pandas 。从包含辅助分隔符的字符串列中提取具有不同列数和子字符串的行

android - 在 mpandroidchart 的 x 轴上实现连续的日期时间标签

python - 如何按一天中的时间对 Pandas 时间序列进行子集化

python - 根据两列从得分最高的组中选择行

python - 使用 loffset 对 pandas DataFrame 重新采样会引入一个小时的额外偏移量

c# - 在 C# 中使用 DateTime 的月份