合并不同长度的.csv文件中的行(python 3.x)

合并不同长度的.csv文件中的行(python 3.x),csv,python-3.x,merge,Csv,Python 3.x,Merge,File1: 2015-01-01 07:00 1 1 1 1 2015-01-01 07:01 1 1 1 2015-01-01 07:02 1 1 1 1 File2: 2015-01-01 07:00 2 2 2015-01-01 07:01 2 2 2015-01-01 07:02 2 2 考虑到每行的时间戳,我想将File2中的文件合并到File1。因此,我为File

File1:

2015-01-01 07:00     1    1    1    1
2015-01-01 07:01     1    1    1
2015-01-01 07:02     1    1    1    1
File2:

2015-01-01 07:00     2    2 
2015-01-01 07:01     2    2
2015-01-01 07:02     2    2
考虑到每行的时间戳,我想将
File2
中的文件合并到
File1
。因此,我为
File1
File2
dict1
dict2
编写了一本
dictionary
,其中
k
=时间戳和
v
=值。 我的代码如下所示:

merged_files = {d1k: d1v+File2Dic.get(d1k[:],[]) for d1k,d1v in File1Dic.items()}
这给了我一个输出:
合并的\u文件

2015-01-01 07:00     1    1    1    1    2    2
2015-01-01 07:01     1    1    1    2    2
2015-01-01 07:02     1    1    1    1    2    2
我想:

2015-01-01 07:00     1    1    1    1    2    2
2015-01-01 07:01     1    1    1         2    2
2015-01-01 07:02     1    1    1    1    2    2

您知道如何调整合并代码以获得该结果吗?

您可以使用pandas函数,然后用空字符串填充
NaN

您可以通过函数将结果写入csv

解释,为什么第4列是
1.0
而不是
1

因为
NaN
值被强制转换为float64


谢谢你的帮助。。。什么是
temp=u
temp1=u
?相反
io.StringIO(temp)
你可以使用
file1.csv
,类似于
io.StringIO(temp1)
o我没有得到它们在哪里打印如果你在csv制表器中有分隔符,你可以使用
df=pd.read\u csv(io.StringIO(temp),sep=“\t”,header=None)
这对我有帮助是的。错过了“接受”按钮,并在最后几天离开了,很抱歉延迟
import pandas as pd
import numpy as np
import io

temp=u"""2015-01-01 07:00;1;1;1;1
2015-01-01 07:01;1;1;1;
2015-01-01 07:02;1;1;1;1"""

df = pd.read_csv(io.StringIO(temp), sep=";", header=None)
print df

temp1=u"""2015-01-01 07:00;2;2 
2015-01-01 07:01;2;2
2015-01-01 07:02;2;2"""

df1 = pd.read_csv(io.StringIO(temp1), sep=";", header=None)
print df1

#merge by first column - by dates
result = pd.merge(df, df1, on=0)
#fill NaN values by empty string
result = result.fillna('')
print result
#                  0  1_x  2_x  3  4  1_y  2_y
#0  2015-01-01 07:00    1    1  1  1    2    2
#1  2015-01-01 07:01    1    1  1       2    2
#2  2015-01-01 07:02    1    1  1  1    2    2

print result.to_csv(header=False, index=False)
#2015-01-01 07:00,1,1,1,1.0,2,2
#2015-01-01 07:01,1,1,1,,2,2
#2015-01-01 07:02,1,1,1,1.0,2,2