Python将日期和时间列连接到带有时区的datetime列中

2024-04-20 02:03:15 发布

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

我有一个数据集,它有一个日期列和一个时间列,我试图将它们合并到一个日期时间列中,但我面临一个月&;日期部分被颠倒

例如:

Date       Time
1/2/2019   3:29:59 PM
4/2/2019   9:15:59 AM

这些日期是2月1日&;2019年2月4日

当我把它们放在我的数据框&;格式:

data = pd.read_csv('{}/{}.csv'.format(data_path,symbol), parse_dates=[['Date','Time']])
data.columns = map(str.lower, data.columns)
data['timedelta'] = pd.Series([pd.Timedelta(seconds=59) for i in range(len(data['date_time']))])
data['date_time'] = data['date_time'] - data['timedelta']
data = data.set_index('date_time').tz_localize('Asia/Kolkata')

我得到这个输出:

Datetime
2019-01-02 15:29:00+0530
2019-04-02 09:15:00+0530

如您所见,DateTime对象用于2019年1月2日和4月2日

如果您能帮助我确定如何正确设置DateTime列的格式,我将不胜感激


Tags: columnscsv数据datadatetimedatetime格式
3条回答

首先,运行此df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')更改日期格式。然后,您可以合并日期和时间。完整代码如下:

data = pd.read_csv('{}/{}.csv'.format(data_path,symbol), parse_dates=[['Date','Time']])
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
data.columns = map(str.lower, data.columns)
data['timedelta'] = pd.Series([pd.Timedelta(seconds=59) for i in range(len(data['date_time']))])
data['date_time'] = data['date_time'] - data['timedelta']
data = data.set_index('date_time').tz_localize('Asia/Kolkata')

调用read_csv时,设置dayfirst=True,以便正确解析日期。使用dt.floor将发言时间缩短到分钟:

data = pd.read_csv(f'{data_path}/{symbol}.csv', parse_dates=[['Date','Time']], dayfirst=True)

data = data.set_index(data['Date_Time'].dt.floor('min')).tz_localize('Asia/Kolkata')

# need to drop col used as index separately here:
data = data.drop(['Date_Time'], axis=1)

读取csv后,将以下内容添加到代码中:

df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

相关问题 更多 >