我有2个数据框,我想从另一个数据框向我的一个数据框添加一个新列 '''
(df1)
Id height ...
12 190
13 180
34 173
。 。
(df2)
Id amount ...
12 234
15 256
13 248
。 。
''' 如何为df1添加一列“金额”,其中包含df1的每个ID的值df2。 df1和df2的大小不相等
答案 0 :(得分:2)
您可以merge
Id
列上的两个数据框,然后将结果amount
列分配给第一个df:
import pandas as pd
df1 = pd.DataFrame(
{"Id": [12, 13, 34], "height": [1, 2, 3]}
)
df2 = pd.DataFrame(
{"Id": [12, 15, 13], "amount": [4, 5, 6]}
)
df1["amount"] = df1.merge(df2, on="Id")["amount"]
结果:
>>> print(df1)
Id height amount
0 12 1 4.0
1 13 2 6.0
2 34 3 NaN
答案 1 :(得分:0)
Id ID是索引列,则可以使用更新方法来实现
df1 = pd.DataFrame([[12, 190.0], [13, 180.0], [34, 173.0]], columns=('Id', 'height')).set_index("Id")
df2 = pd.DataFrame([[12, 234.0], [15, 256.0], [13, 248.0]], columns=('Id', 'amount')).set_index("Id")
df1["amount"] = np.nan
df1.update(df2, overwrite=True)
print(df1)
结果
height amount
Id
12 190.0 234.0
13 180.0 248.0
34 173.0 NaN