避免pandas

时间:2016-04-18 11:35:52

标签: python datetime pandas dataframe

我有一个超过100万行的巨大数据帧。在那里我有一个日期列,不幸的是有不正确的格式化(混合)日期字符串。

现在我确实通过以下方式将其转换为日期时间:

df['TRX_DATE'] = pd.to_datetime(df['TRX_DATE'],coerce=True)
# without any error
# Now i want to calculate week day from that date columns
df['day_type'] = [x.strftime('%A') for x in d['TRX_DATE']]
###ValueError: month out of range

如果它是单个字段,我可以使用dateutil解析器进行管理。但在这种情况下,我不知道如何处理。

只是有兴趣,如果周转换行可以有类似的东西超出范围的地方默认...

有想法,但作为一个新手。没有那么多经验可以做到这一点。

如果有人可以提供代码行来处理它,那将会很有帮助。

2 个答案:

答案 0 :(得分:5)

我认为您可以使用参数errors='coerce'解析to_datetime,然后使用strftime转换为weekday as locale’s full name

print df
              TRX_DATE  some value
0  2010-08-15 13:00:00      27.065
1  2010-08-16 13:10:00      25.610
2  2010-08-17 02:30:00      17.000
3  2010-06-18 02:40:00      17.015
4  2010-18-19 02:50:00      16.910

df['TRX_DATE'] = pd.to_datetime(df['TRX_DATE'],errors='coerce')

df['day_type'] = df['TRX_DATE'].dt.strftime('%A')
print df
             TRX_DATE  some value day_type
0 2010-08-15 13:00:00      27.065   Sunday
1 2010-08-16 13:10:00      25.610   Monday
2 2010-08-17 02:30:00      17.000  Tuesday
3 2010-06-18 02:40:00      17.015   Friday
4                 NaT      16.910      NaT

答案 1 :(得分:0)

[x.strftime('%A') for x in df['TRX_DATE'] if not isinstance(x, pandas.tslib.NaTType)]