Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当数据集中没有公共列名时,我们应该如何组合多个数据集而不在行或列中重复_Python_Pandas_Data Analysis - Fatal编程技术网

Python 当数据集中没有公共列名时,我们应该如何组合多个数据集而不在行或列中重复

Python 当数据集中没有公共列名时,我们应该如何组合多个数据集而不在行或列中重复,python,pandas,data-analysis,Python,Pandas,Data Analysis,我是数据分析的初学者,我想把3个表合并成一个没有重复行或列的表。我在所有3个表中都有一列具有相似值,但在3个表中列的名称不同。 我有三个表'listings','users','info'。它们都有相同的ID号,但它有不同的列名,如列表表中的“user\u ID”、“users表中的ID”和info表中的“ID\u number” 我尝试了以下方法,但仍然得到重复值或NaN值 pd.merge(listings,users,left_on='user_id',right_on='id').mer

我是数据分析的初学者,我想把3个表合并成一个没有重复行或列的表。我在所有3个表中都有一列具有相似值,但在3个表中列的名称不同。 我有三个表
'listings'
'users'
'info'
。它们都有相同的ID号,但它有不同的列名,如列表表中的“user\u ID”、“users表中的ID”和info表中的“ID\u number”

我尝试了以下方法,但仍然得到重复值或NaN值

pd.merge(listings,users,left_on='user_id',right_on='id').merge(info,left_on='user_id',right_on='id_number')
在这种情况下,我看到重复的值,并且结果中的总行数非常少

我试过concat如下:

pd.concat(['listings','users','info'],axis=1)
但我得到了以下错误:

TypeError:无法连接“”类型的对象;只有 pd.Series、pd.DataFrame和pd.Panel(已弃用)对象是有效的


当您使用
pd.merge
而不提供how参数时,您正在对两个表执行
internal
联接。由于
internal
联接是一种数学
交集
,您应该期望在较小的表中看到少于或等于行数的行

当你这样做的时候

pd.merge(listings,users,left_on='user_id',right_on='id').merge(info,left_on='user_id',right_on='id_number')
您必须有重复的列
。第一次合并的结果中将出现两列
id
user\u id
,执行第二次合并时,将出现两列
user\u id
id\u number
。这些都是一列的副本

如果这三个表都有相同的
ID
,则不会看到重复的列。我认为你应该删除重复的列。我相信,如果您将第一次合并的结果保存在一个数据帧中,然后使用
info
表执行最终合并,您将能够轻松地找出重复列的来源