如何将两列作为日期与大熊猫合并?

时间:2019-11-08 11:17:18

标签: pandas date merge format

我有一个csv,第一列是日期,第五列是小时。 我想将它们合并为具有特定格式的单个列,以便编写另一个csv文件。

这基本上是文件:

DATE,DAY.WEEK,DUMMY.WEEKENDS.HOLIDAYS,DUMMY.MONDAY,HOUR 
01/01/2015,5,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,3,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,4,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,5,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,6,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,7,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,8,1,0,0,0,0,0,0,0,0,0,0,0

我尝试将数据框读取为

dataR = pd.read_csv(fnamecsv) 

并将第一行转换为日期,如:

date_dt3 = datetime.strptime(dataR["DATE"].iloc[0], '%d/%m/%Y')

但是,在我看来这不是正确的方法,原因有两个:

1)在不考虑小时列的情况下添加小时;

2)似乎没有使用熊猫功能。

感谢您的任何帮助

Diedro

2 个答案:

答案 0 :(得分:0)

您可以将read_csv与参数parse_dates一起使用,列出两列名称,而date_parser用于指定格式:

f = lambda x: pd.to_datetime(x, format='%d/%m/%Y %H')
dataR = pd.read_csv(fnamecsv, parse_dates=[['DATE','HOUR']], date_parser=f)

或将小时数转换为timedelta并在以后添加至日期时间:

dataR = pd.read_csv(fnamecsv, parse_dates=[0], dayfirst=True) 
dataR['DATE'] += pd.to_timedelta(dataR.pop('HOUR'), unit='H')

答案 1 :(得分:0)

使用+运算符

您需要在连接之前将数据框架元素转换为字符串。您还可以在连接期间使用不同的分隔符,例如短划线,下划线或空格。

import pandas as pd 

df = pd.DataFrame({'Last': ['something', 'you', 'want'], 
                   'First': ['merge', 'with', 'this']}) 

print('Before Join') 
print(df, '\n') 

print('After join') 
df['Name']= df["First"].astype(str) +" "+ df["Last"] 
print(df) ```