Pandas 向数据框添加新列

Pandas 向数据框添加新列,pandas,dataframe,Pandas,Dataframe,我试着在熊猫身上做一些应该很简单的事情,但看起来根本不是。我有两个大数据帧 df1有243列,其中包括: ID2 K. C type 1 123 1. 2. T 2 132 3. 1. N 3 111 2. 1. U ID3 A B 1 123 0. 3. 2 111 2. 3. 3 132 1. 2. df2有121列,其中包括: ID2 K. C type 1 12

我试着在熊猫身上做一些应该很简单的事情,但看起来根本不是。我有两个大数据帧

df1有243列,其中包括:

   ID2  K.   C  type
1  123  1.   2.   T
2  132  3.   1.   N
3  111  2.   1.   U
   ID3  A    B   
1  123  0.   3.   
2  111  2.   3.   
3  132  1.   2. 
df2有121列,其中包括:

   ID2  K.   C  type
1  123  1.   2.   T
2  132  3.   1.   N
3  111  2.   1.   U
   ID3  A    B   
1  123  0.   3.   
2  111  2.   3.   
3  132  1.   2. 
df2包含关于相同ID(ID2=ID3)的不同信息,但顺序不同

我想在df2中创建一个名为(type)的新列,并与df1中的type列相匹配。如果它与df1中的ID相同,它应该从df1复制相同的类型(T、N或U)。换句话说,我需要它看起来像下面的数据帧,但是包含df2+类型的所有121列

ID3   A    B  type
123  0.   3.   T
111  2.   3.   U
132  1.   2.   N
我试过了

pd.merge和pd.join

我也试过了

df2['type'] = df1['ID2'].map(df2.set_index('ID3')['type'])
但它们都不起作用。
它显示KeyError:“ID3”

据我所知,您的上一个命令几乎是正确的。试试这个:

df2['type'] = df2['ID3'].map(df1.set_index('ID2')['type'])
加入

合并
(取1)
合并
(取2)
映射
分配

非常感谢你。你救了我。我已经试了三个多小时了。再次感谢。@user9715239您可能应该接受答案。@user9715239,听到这个消息太好了!还有阿美,谢谢你的鼓励:)
df2.merge(df1[['ID2', 'type']], left_on='ID3', right_on='ID2').drop('ID2', 1)

   ID3    A    B type
0  123  0.0  3.0    T
1  111  2.0  3.0    U
2  132  1.0  2.0    N
df2.assign(type=df2.ID3.map(dict(zip(df1.ID2, df1['type']))))

   ID3    A    B type
0  123  0.0  3.0    T
1  111  2.0  3.0    U
2  132  1.0  2.0    N