如何在python中更改时间和转换格式
我们已将格式从UTC转换为欧洲/柏林,但时间不变。我们在ubuntu服务器上使用python和pandas 我们试着运行一个应该改变时间和格式的代码。尽管如此,时间是一样的如何在python中更改时间和转换格式,python,pandas,csv,datetime,Python,Pandas,Csv,Datetime,我们已将格式从UTC转换为欧洲/柏林,但时间不变。我们在ubuntu服务器上使用python和pandas 我们试着运行一个应该改变时间和格式的代码。尽管如此,时间是一样的 import pandas as pd df = pd.read_csv('feeds.csv', date_parser=dateparse) df['created_at'] = df['created_at'].str.replace(' UTC', '') df['created_at'] = pd.to_da
import pandas as pd
df = pd.read_csv('feeds.csv', date_parser=dateparse)
df['created_at'] = df['created_at'].str.replace(' UTC', '')
df['created_at'] = pd.to_datetime(df['created_at'])
df['created_at'].dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin').dt.strftime('%Y-%m-%d %H:%M:%S')
df.to_csv('feeds.csv',index=False)
print(df)
时间应该改变,所以12:50:13改为14:50:13
您需要将转换结果分配回列:
df['created_at'] = df['created_at'].dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin').dt.strftime('%Y-%m-%d %H:%M:%S')
您已经在前面两行中这样做了
您可以跳过dt.tz\u localize()
调用,方法是告诉pd.to\u datetime()
为您处理此问题:
df['created_at'] = pd.to_datetime(df['created_at'], utc=True)
df['created_at'] = df['created_at'].dt.tz_convert('Europe/Berlin').dt.strftime('%Y-%m-%d %H:%M:%S')
最后,将所有操作连成一个:
df['created_at'] = (
pd.to_datetime(df['created_at'].str.replace(' UTC', ''), utc=True)
.dt.tz_convert('Europe/Berlin')
.dt.strftime('%Y-%m-%d %H:%M:%S')
)
演示:
将其分配回
df['created_at']=df['created_at'].dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin').dt.strftime('%Y-%m-%d%H:%m:%S')
请不要发布代码/数据/回溯的图像。只需复制文本,粘贴到问题中,并将其格式化为代码。另请参阅,以获取关于如何发布问题的非常好的建议。我们不需要CSV输入,我们只需要一个小数据帧。我在回答中创建了一个最小的示例。谢谢,但由于时间关系,您必须等待10分钟,@wwii:-)
>>> import pandas as pd
>>> df = pd.DataFrame({"created_at": ["2019-07-26 12:50:13 UTC", "2019-07-26 13:00:13 UTC"]})
>>> df
created_at
0 2019-07-26 12:50:13 UTC
1 2019-07-26 13:00:13 UTC
>>> df['created_at'] = (
... pd.to_datetime(df['created_at'].str.replace(' UTC', ''), utc=True)
... .dt.tz_convert('Europe/Berlin')
... .dt.strftime('%Y-%m-%d %H:%M:%S')
... )
>>> df
created_at
0 2019-07-26 14:50:13
1 2019-07-26 15:00:13