如何根据另一个DataFrame中的值在pandas DataFrame中创建新列

0 投票
2 回答
30 浏览
提问于 2025-04-14 17:03

这可能是个简单的问题,但我找不到正确的指令来轻松解决它。

我有两个数据框,它们的结构如下。

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["你想添加的列名"] = 值 就可以把你想要的列添加到数据表里

撰写回答