gpt4 book ai didi

python - Pandas 将日期时间字符串列转换为日期时间而不应用偏移

转载 作者:行者123 更新时间:2023-11-30 22:14:56 25 4
gpt4 key购买 nike

我是 Python 和 Pandas 新手,所以不要对我太难了:)

我有多个“2014-01-01 00:00:00-06:00”形式的列。现在我想将列名称转换为 pandas 日期时间。但我对需要使用的格式感到困惑。我已经尝试过了

date = pd.to_datetime("2014-01-01 00:00:00-06:00", format='%Y-%m-%d %H:%M:%S%z')

但这里我收到一个错误 “ValueError: time data '2014-01-01 00:00:00-06:00' does not match format '%Y-%m-%d %H: %M:%S%Z'(匹配)"

我不希望时间转换为我的时区。我需要时区 -06:00

对于此输入:

2014-01-01 00:00:00-06:00

输出应该是:

2014-01-01 00:00:00

我想使用输出的日期变量,这样我就可以将数据分成季节。像这样的事情:

date > springBegining

感谢大家的帮助

最佳答案

你不需要格式字符串,pandas 足以处理这个问题:

In[2]:
pd.to_datetime('2014-01-01 00:00:00-06:00')

Out[2]: Timestamp('2014-01-01 06:00:00')

此外,您的格式字符串还有很多问题:

%b 是月份的语言环境缩写形式,您有一个数字表示形式,因此应该是 %m

%z 需要采用 '+HHMM'/-HHMM 形式的 UTC 偏移量

因此您需要将日期时间字符串重新格式化为:

'2014-01-01 00:00:00-0600'

如果您不想应用偏移量并且偏移量始终相同,您可以从字符串中删除它:

In[25]:
pd.to_datetime('2014-01-01 00:00:00-06:00'.rsplit('-',1)[0])

Out[25]: Timestamp('2014-01-01 00:00:00')

或者你可以对字符串进行切片:

In[26]:
pd.to_datetime('2014-01-01 00:00:00-06:00'[:-6])

Out[26]: Timestamp('2014-01-01 00:00:00')

因此,要对整个列执行上述操作:

pd.to_datetime(df[col].str[:-6])

示例:

In[27]:
df = pd.DataFrame({'date':['2014-01-01 00:00:00-06:00','2014-01-01 00:00:00+06:00']})
df

Out[27]:
date
0 2014-01-01 00:00:00-06:00
1 2014-01-01 00:00:00+06:00

In[28]:
pd.to_datetime(df['date'].str[:-6])

Out[28]:
0 2014-01-01
1 2014-01-01
Name: date, dtype: datetime64[ns]

这里我们使用字符串访问器.str以相同的方式对所有列进行切片,并将其传递给to_datetime以转换整个列

关于python - Pandas 将日期时间字符串列转换为日期时间而不应用偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50388683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com