使用pandas将文本文件与csv数据库文件合并

时间:2015-12-10 12:34:21

标签: python python-2.7 csv pandas

[更新我的问题]

我的文本文件如下所示,

#File_infoomation1
#File_information2
A B C D
1 2 3 4.2 
5 6 7 8.5   #example.txt separate by tab '\t' column A dtype is object 

我想将文本文件与基于列E的csv数据库文件合并。该列包含整数。

E,name,age
1,john,23
5,mary,24  # database.csv  column E type is int64

所以我尝试读取文本文件,然后删除前2个不需要的头行。

    example = pd.read_csv('example.txt', header = 2, sep = '\t')
    database = pd.read_csv('database.csv') 
    request = example.rename(columns={'A': 'E'})
    New_data = request.merge(database, on='E', how='left')

但结果并没有出现我想要的东西,而是在列名和年龄中显示NaN,

我认为int64object dtype是错误所在,任何人都知道如何解决这个问题?

E,B,C,D,name,age
1,2,3,4.2,NaN,NaN
5,6,7,8.5,NaN,NaN 

2 个答案:

答案 0 :(得分:0)

您只需在代码中对其进行编辑:

而不是

  example = pd.read_csv('example.txt', header = 2, sep = '\t', delim_whitespace=False )

使用此:

 example = pd.read_csv('example.txt',  sep = ' ' ,index_col= False)

答案 1 :(得分:0)

其实我尝试用以下方式阅读你的文件:

example = pd.read_csv('example.txt', header = 2, sep = '\t')

# Renaming
example.columns = ['E','B','C','D']

database = pd.read_csv('database.csv')

New_data = example.merge(database, on='E', how='left')

然后返回:

   E  B  C    D  name  age
0  1  2  3  4.2  john   23
1  5  6  7  8.5  mary   24

编辑:实际上不清楚原始example.txt文件的分隔符。如果是空格,请尝试sep='\s'代替sep=' '空格。