Python 用一个键合并两个数据帧,其中一列变为行,另一列不变为行';T
我有一个数据帧Python 用一个键合并两个数据帧,其中一列变为行,另一列不变为行';T,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧df1,如下所示: A B key a1 b1 001A a2 b2 4906 a3 b3 0190 a4 b4 1993 和另一个数据帧df2,如: C D key c1 1 001A c1 2 4906 c1 3 0190 c1 4 1993 c2 5 001A c2 6 4906 c2 7 0190 c2 8 1993 我想合并它们以获得 A B key c1 c2 a1 b1 001
df1
,如下所示:
A B key
a1 b1 001A
a2 b2 4906
a3 b3 0190
a4 b4 1993
和另一个数据帧df2,如:
C D key
c1 1 001A
c1 2 4906
c1 3 0190
c1 4 1993
c2 5 001A
c2 6 4906
c2 7 0190
c2 8 1993
我想合并它们以获得
A B key c1 c2
a1 b1 001A 1 5
a2 b2 4906 2 6
a3 b3 0190 3 7
a4 b4 1993 4 8
我试过了
pd.merge(df, df2, on='key')
但它不像我想要的那样匹配。我似乎无法将行作为列 您应该首先使用df2
将其做成您想要的形状
df2.pivot(index='key', columns='C', values='D')
c1c2
钥匙
001A 1 5
0190 3 7
1993 4 8
4906 2 6
然后,您可以将此透视表连接到您的df
df.join(df2.pivot(index='key', columns='C', values='D'), on='key')
A B键c1 c2
0 a1 b1 001A 1 5
1 a2 b2 4906 2 6
2 a3 b3 0190 3 7
3 a4 b4 1993 4 8
或者,如果您愿意,可以使用pd.merge
,尽管它更详细
pd.merge(df, df2.pivot(index='key', columns='C', values='D'),
left_on='key', right_index=True)
您应该首先使用df2
将其设置为所需的形状
df2.pivot(index='key', columns='C', values='D')
c1c2
钥匙
001A 1 5
0190 3 7
1993 4 8
4906 2 6
然后,您可以将此透视表连接到您的df
df.join(df2.pivot(index='key', columns='C', values='D'), on='key')
A B键c1 c2
0 a1 b1 001A 1 5
1 a2 b2 4906 2 6
2 a3 b3 0190 3 7
3 a4 b4 1993 4 8
或者,如果您愿意,可以使用pd.merge
,尽管它更详细
pd.merge(df, df2.pivot(index='key', columns='C', values='D'),
left_on='key', right_index=True)
完美的从来没有想过枢轴部分!完美的从来没有想过枢轴部分!