如何将csv文件中的两列日期和时间合并到pandas中的1个datetime列?

2024-10-03 15:27:20 发布

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

我有一个csv文件,格式如下:

日期;时间;DD;FH;FF;FX;T;
20110101;1;240;30;30;40;15;
20110101;2;250;30;40;60;18;
20110101;3;250;40;40;70;21;
20110101;4;250;40;30;60;20;
20110101;5;250;40;40;40;60;21

我想要一个熊猫数据帧,它将日期和时间列合并为1个日期时间。 我尝试了以下代码来实现这一点:

deelen = pandas.read_csv('Deelen2.csv', parse_dates = [[0,1]], header = 0,   index_col = 0, delimiter=';', low_memory=False)

我得到以下输出:

^{pr2}$

所以日期和时间组合在一列中,但它不是日期时间。在

我也试过:

>>> deelen = pandas.read_csv('Deelen2.csv', parse_dates = {'datetime' : [0,1]}, header = 0, index_col = ['datetime'], delimiter=';')

但这也产生了类似的结果:

           DD     FH     FF     FX      T    
datetime                                                                   
20110101 1   240     30     30     40     15            
20110101 2   250     30     40     60     18               
20110101 3   250     40     40     70     21             
20110101 4   250     40     30     60     20           
20110101 5   250     40     40     60     21 

因为某种原因它不起作用。。 我用的是python2.7和pandas 0.18.0

提前谢谢你的帮助


Tags: csvpandasreaddatetimeindexparse时间dd
1条回答
网友
1楼 · 发布于 2024-10-03 15:27:20

好的,下面的工作:

In [140]:
import io
import pandas as pd
t="""date;time;DD;FH;FF;FX;T;
20110101;1;240;30;30;40;15;
20110101;2;250;30;40;60;18;
20110101;3;250;40;40;70;21;
20110101;4;250;40;30;60;20;
20110101;5;250;40;40;60;21;"""
df = pd.read_csv(io.StringIO(t), sep=';', dtype=({'date':str}))
df['date_time'] = pd.to_datetime(df['date']) + pd.TimedeltaIndex(df['time'], unit='H')
df

Out[140]:
       date  time   DD  FH  FF  FX   T  Unnamed: 7           date_time
0  20110101     1  240  30  30  40  15         NaN 2011-01-01 01:00:00
1  20110101     2  250  30  40  60  18         NaN 2011-01-01 02:00:00
2  20110101     3  250  40  40  70  21         NaN 2011-01-01 03:00:00
3  20110101     4  250  40  30  60  20         NaN 2011-01-01 04:00:00
4  20110101     5  250  40  40  60  21         NaN 2011-01-01 05:00:00

在这里,我将date列的dtype指定为str,然后转换它并从时间列构造一个TimedeltaIndex,并将其添加到to_datetime的结果中

相关问题 更多 >