如何根据另一个DataFrame中的值在pandas DataFrame中创建新列
这可能是个简单的问题,但我找不到正确的指令来轻松解决它。
我有两个数据框,它们的结构如下。
Dataframe 1
Name1 Name2 Col1 Col2 Col3 Col4
aaa bbb 1 3 5 7
ccc ddd 9 8 6 4
eee fff 2 10 11 12
ggg hhh 13 15 17 19
aaa jjj 25 35 23 41
.
.
.
Dataframe 2
Name ColA ColB
aaa 100 200
ggg 300 400
eee 500 600
ccc 700 800
.
.
.
我需要在数据框1中添加两列,这两列的值来自数据框2的ColA和ColB,前提是数据框1中的Name1等于数据框2中的name。
这样就能得到以下结果:
Dataframe 1
Name1 Name2 Col1 Col2 Col3 Col4 ColA ColB
aaa bbb 1 3 5 7 100 200
ccc ddd 9 8 6 4 700 800
eee fff 2 10 11 12 500 600
ggg hhh 13 15 17 19 300 400
aaa bbb 25 35 23 41 100 200
.
.
.
需要注意的是,数据框1中可能会出现多次aaa、bbb、ccc,但数据框2中这些值只出现一次。
2 个回答
0
使用 pd.merge
:
df1 = pd.merge(df1, df2.rename(columns={"Name": "Name1"}), on="Name1")
Name1 Name2 Col1 Col2 Col3 Col4 ColA ColB
0 aaa bbb 1 3 5 7 100 200
1 ccc ddd 9 8 6 4 700 800
2 eee fff 2 10 11 12 500 600
3 ggg hhh 13 15 17 19 300 400
0
你可以这样做
DataFrame1["ColA"] = DataFrame2["ColA"]
DataFrame1["ColB"] = DataFrame2["ColB"]
这会把你想要的列添加到DataFrame1中
每当你想添加一个在你的数据表中不存在的列时,你只需要输入 DataFrame_name["你想添加的列名"] = 值
就可以把你想要的列添加到数据表里