如何将pandas数据帧中的字符串的一部分去掉,从而将结果理解为带有时区的时间戳?

2024-10-02 20:37:45 发布

您现在位置:Python中文网/ 问答频道 /正文

1.问题

我有一个带有时间戳的csv文件中的数据。 以下是这些时间戳格式的示例:

“2017年8月18日星期五00:00:00格林尼治标准时间+0200(欧洲中部地区)

熊猫似乎无法处理这样的字符串格式。 使用to_datetime函数检查pandas是否能够处理它,我有以下错误:

In [3]: pd.to_datetime('Fri Aug 18 2017 00:00:00 GMT+0200 (heure d%u2019été d%u2019Europe centrale)')
Out[3]: raise ValueError("Unknown string format:", timestr)
ValueError: ('Unknown string format:', 'Fri Aug 18 2017 00:00:00 GMT+0200 (heure d%u2019été d%u2019Europe centrale)')

2.识别的逻辑

但如果我删除blabla,它似乎会起作用:

In [4]: pd.to_datetime('Fri Aug 18 2017 00:00:00 GMT+0200')
Out[4]: Timestamp('2017-08-18 00:00:00-0200', tz='pytz.FixedOffset(-120)')

因此,让熊猫正确理解此列为带时区的时间戳的解决方案是首先剥离blabla:

“欧洲中央银行(heure d%u2019étéd%u2019欧洲中央银行)”

然后应用to_datetime函数

3.实施

所以,我试着使用下面几行代码,但它就是不起作用

数据帧是:

,date
0,Fri Aug 18 2017 00:00:00 GMT+0200 (heure d%u2019été d%u2019Europe centrale)
1,Sat Aug 19 2017 00:00:00 GMT+0200 (heure d%u2019été d%u2019Europe centrale)

数据帧存储为“GC” 我试过:

for ts in GC[1][:]:
    ts.replace(' (heure d%u2019été d%u2019Europe centrale)')
    ts.to_datetime()

我有这个输出(我不太清楚-我正在使用spyder,这可能不是很有帮助)

File "pandas\_libs\hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 1

请问,正确的方法是什么? 我事先感谢你的帮助

祝你过得愉快

最好的

皮埃罗


Tags: to数据函数pandasdatetime格式时间aug
1条回答
网友
1楼 · 发布于 2024-10-02 20:37:45

^{}与列dateregex=False一起使用,以避免读取类似()的正则表达式:

s = df['date'].str.replace(' (heure d%u2019été d%u2019Europe centrale)', '', regex=False)
df['date'] = pd.to_datetime(s)

或者您可以使用转义)\)分割值,因为正则表达式的特殊字符:

df['date'] = pd.to_datetime(df['date'].str.split(' \(').str[0])

相关问题 更多 >