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

Python 使用pandas将文本文件与csv数据库文件合并,python,python-2.7,csv,pandas,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 i

[更新我的问题]

我有一个如下所示的文本文件

#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
因此,我尝试读取文本文件,然后删除前两个不需要的标题行

    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

我认为
int64
object
dtype是错误所在,有人知道如何解决这个问题吗

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

您只需在代码中编辑以下内容:

而不是

  example = pd.read_csv('example.txt', header = 2, sep = '\t', delim_whitespace=False )
使用以下命令:

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

您只需在代码中编辑以下内容:

而不是

  example = pd.read_csv('example.txt', header = 2, sep = '\t', delim_whitespace=False )
使用以下命令:

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

实际上,我试着用以下方法读取您的文件:

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='
放在空格中。

事实上,我尝试用以下方法读取您的文件:

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='
作为空格。

是否要像
示例那样进行查询。A==database.E
然后选择行?是的,更改为相同的列名,然后使用merge合并两个文件。在example.txt文件中,值不会像
\t
那样以制表符分隔。它们用
\s
分隔,一切正常,问题在于您读取文件。你能用
打印(请求)
发布你的
请求
数据库
吗?如果不确定有多少空格,可以使用分隔符作为
regex
如:
df=pd.read\u csv(文件,sep='\s+')
是否要查询如
示例。A==database.E
然后选择行?是,更改为相同的列名,然后使用merge合并两个文件。在example.txt文件中,值不是像
\t
那样用制表符分隔的。它们用
\s
分隔,一切正常,问题在于您读取文件。你能用
打印(请求)
发布你的
请求
数据库
吗?如果您不确定有多少空格,可以使用分隔符作为
regex
例如:
df=pd.read\u csv(文件,sep='\s+')
我的example.txt文件由制表符'\t'分隔,对不起,我没有说清楚。我修改了我的问题。谢谢,您不需要指定
index\u col=False
,因为它是默认值:
index\u col=None
,这是相同的。我的example.txt文件由制表符“\t”分隔,很抱歉我没有说清楚。我修改了我的问题。谢谢,您不需要指定
index\u col=False
,因为它是默认值:
index\u col=None
,这是相同的。很抱歉,它仍然不起作用,仍然显示NaN,我想这可能是由我的数据类型造成的。我甚至先将example.txt传输到csv文件。很抱歉,我刚刚复制并粘贴了您的数据帧(在第一个数据帧中,我按照您所说的手动添加了选项卡)。也许格式还是有问题?尝试用不同的分隔符解析.txt文件。我尝试打印数据库。dtypes(),它打印出“Series”对象不可调用,然后我尝试打印示例。dtypes(),它在第一列A中显示对象。您知道如何处理此问题吗?
\s
代表Regex中的空格。这里您必须使用
sep=''
您可以对单个空间同时使用sep=''和sep='\s'。很抱歉,它仍然不起作用,仍然显示NaN,我认为这可能是由我的数据类型造成的。我甚至先将example.txt传输到csv文件。很抱歉,我刚刚复制并粘贴了您的数据帧(在第一个数据帧中,我按照您所说的手动添加了选项卡)。也许格式还是有问题?尝试用不同的分隔符解析.txt文件。我尝试打印数据库。dtypes(),它打印出“Series”对象不可调用,然后我尝试打印示例。dtypes(),它在第一列A中显示对象。您知道如何处理此问题吗?
\s
代表Regex中的空格。这里您必须使用
sep=''
您可以对单个空间同时使用sep=''和sep='\s'。