Python 如何对具有相同行数但没有匹配列名的2个数据帧执行联接?
我试图在数据帧的所有特性中绘制缺失NaN值的直方图 为此,我为丢失的NaN值创建了一个数据帧 缺少值数据帧Python 如何对具有相同行数但没有匹配列名的2个数据帧执行联接?,python,pandas,dataframe,data-science,concat,Python,Pandas,Dataframe,Data Science,Concat,我试图在数据帧的所有特性中绘制缺失NaN值的直方图 为此,我为丢失的NaN值创建了一个数据帧 缺少值数据帧 0 ----- 0 0 1 14 2 800 . . 84 2344 0 1 --------- F1 3 3 F2 4 3 . . F85 5 2 然后我有一个主数据框,它有多个我不关心的列,因为我只需要这个数据框中的行名称 主数据帧 0 ----- 0 0 1 14 2 800 . . 84 2344 0 1 ---
0
-----
0 0
1 14
2 800
.
.
84 2344
0 1
---------
F1 3 3
F2 4 3
.
.
F85 5 2
然后我有一个主数据框,它有多个我不关心的列,因为我只需要这个数据框中的行名称
主数据帧
0
-----
0 0
1 14
2 800
.
.
84 2344
0 1
---------
F1 3 3
F2 4 3
.
.
F85 5 2
我如何合并/连接这两个数据帧,最终输出应该是这样的(主数据帧中的列是不相关的,因为我想绘制所有特征(如F1、F2、F85)中缺失值的数量)
我们可以使用
pandas
的concat
方法轻松做到这一点
`
`
您将根据您的要求获得准确的值。我们可以通过使用
pandas
的concat
方法轻松做到这一点
`
`
您将根据您的要求获得准确的值。请确保您的数据帧是
df1
(缺少值数据帧)和df2
(主数据帧)。然后你可以试试这个:
df1.columns=['X']
res = df2.reset_index().join(df1.reset_index(), rsuffix='_r')[['index', 'X']].set_index('index')
print(res)
结果将是:
index
F1 0
F2 14
F3 800
...
F85 2344
其思想是使用行号替换两个数据帧中的索引,然后合并数据帧,因为您的数据帧是
df1
(缺少值的数据帧)和df2
(主数据帧)。然后你可以试试这个:
df1.columns=['X']
res = df2.reset_index().join(df1.reset_index(), rsuffix='_r')[['index', 'X']].set_index('index')
print(res)
结果将是:
index
F1 0
F2 14
F3 800
...
F85 2344
其思想是使用行号替换两个数据帧中的索引,然后合并数据帧。如果要水平合并两个数据帧,则不考虑具有相同行数、不同列数和索引的索引。仅从某些列中选择某些列
将熊猫作为pd导入
df1=pd.DataFrame(索引=[1,2,3],数据={“a”:[3,6,4]})
df2=pd.DataFrame(索引=[“a1”,“v2”,“x”],数据={“x”:[-3136,-5],“y”:[“x”,“y”,“c”]})
df3=pd.concat([df1.reset_index(drop=True),df2[“x”].to_frame().reset_index(drop=True)],axis=1,ignore_index=False)
输入:
#df1
A.
1 3
2 6
3 4
#df2
xy
a1-3 x
v2 136 y
x-5 c
输出:
#df3
a x
0 3 -3
1 6 136
2 4 -5
IIUC您希望水平合并2个数据帧,而不考虑具有相同行数、不同列数和索引数的索引。仅从某些列中选择某些列
将熊猫作为pd导入
df1=pd.DataFrame(索引=[1,2,3],数据={“a”:[3,6,4]})
df2=pd.DataFrame(索引=[“a1”,“v2”,“x”],数据={“x”:[-3136,-5],“y”:[“x”,“y”,“c”]})
df3=pd.concat([df1.reset_index(drop=True),df2[“x”].to_frame().reset_index(drop=True)],axis=1,ignore_index=False)
输入:
#df1
A.
1 3
2 6
3 4
#df2
xy
a1-3 x
v2 136 y
x-5 c
输出:
#df3
a x
0 3 -3
1 6 136
2 4 -5
我看不出任何东西是如何在output@yatu第一列似乎来自第二个数据帧(我假设是它的索引)。尽管您可以尝试稍微改进一下格式,以便更容易理解和复制Shalin。当然@CeliusStingher,请重新格式化。希望现在可以阅读..正确,a)来自数据框2的特征(本例中的行)b)在数据框1中确定并显示的缺失值需要显示在合并的数据框中。。最后,我将转置合并后的数据帧,使用F1、F2、…F85绘制直方图,转置后这些列将成为列。希望这是合理的。您的意思是希望结果数据帧具有来自第二个数据帧(主数据帧)的索引和来自第一个数据帧(缺少值数据帧)的值吗?换句话说,您希望通过行号连接,对吗?是的,但是正如您所看到的,两个数据帧中的行名称没有公共性。因此,基本上,我想将数据帧1叠加到数据帧2上,这样丢失的值编号将逐行对应于合并的数据帧中的行名称(F1、F2…F85)。这可能吗?我看不出在output@yatu第一列似乎来自第二个数据帧(我假设是它的索引)。尽管您可以尝试稍微改进一下格式,以便更容易理解和复制Shalin。当然@CeliusStingher,请重新格式化。希望现在可以阅读..正确,a)来自数据框2的特征(本例中的行)b)在数据框1中确定并显示的缺失值需要显示在合并的数据框中。。最后,我将转置合并后的数据帧,使用F1、F2、…F85绘制直方图,转置后这些列将成为列。希望这是合理的。您的意思是希望结果数据帧具有来自第二个数据帧(主数据帧)的索引和来自第一个数据帧(缺少值数据帧)的值吗?换句话说,您希望通过行号连接,对吗?是的,但是正如您所看到的,两个数据帧中的行名称没有公共性。因此,基本上,我想将数据帧1叠加到数据帧2上,这样丢失的值编号将逐行对应到行名称(F1、F2…F85)在合并的数据框中..这可能吗?如果不清楚,很抱歉..我做了一些编辑..没有匹配的列,这就是为什么我不能简单地执行Concat的原因您可以在上面的代码中更改列名,然后还可以获得准确的输出。我知道了,但即使这样,仍然会在匹配的行名上进行连接(而不是行号),这不在我的问题中。如果你看到下面Stepan的解决方案涉及重置索引,它解决了目的。在上面的回答中,你必须导入pandas
library,然后它将解决问题。当然,Vijayant。pandas库需要导入,但我说的是,问题不同。如果你看,这不是简单的连接在我的初始问题和Stepan提供的解决方案中…请再次查看..您的解决方案将在匹配列上进行内部联接,如果不清楚,这不是asksorry..我进行了一些编辑..没有匹配列