繁体   English   中英

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

[英]How do I combine two columns of date and time in a csv file to 1 datetime column in pandas?

我得到了具有以下格式的csv文件:

日期;时间; DD; FH; FF; FX;吨;
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;

我想要一个将日期和时间列组合为1 datetime的熊猫数据框。 我尝试了以下代码来做到这一点:

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

我得到以下输出:

>>> deelen.head()
          DD     FH     FF     FX      T    
date_time                                                                  
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 

因此,日期和时间合并在1列中,但不是日期时间。

我也尝试过:

>>> 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 

由于某种原因,它无法正常工作。我正在使用Python 2.7和pandas 0.18.0

先谢谢您的帮助

确定以下工作:

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

这里我指定的dtypedatestr然后我转换这一点,并构建一个TimedeltaIndex从你的时间列,这增加的结果to_datetime

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM