Python 用另一个数据帧列中的值填充数据帧列的步骤
我有两个数据帧:Python 用另一个数据帧列中的值填充数据帧列的步骤,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧: df1 = item sale 0 7 10.0 1 4 10.0 2 6 10.0 3 5 10.0 4 5 10.0 5 6 10.0 6 4 10.0 df2 = item sale 0 1 7 1 2 6 2 3 5 3 4 4 4 5 3 我想更改df1 sales列的值,取df2 sales列的值 我使用代码: df1.loc[df1.item.isin
df1 =
item sale
0 7 10.0
1 4 10.0
2 6 10.0
3 5 10.0
4 5 10.0
5 6 10.0
6 4 10.0
df2 =
item sale
0 1 7
1 2 6
2 3 5
3 4 4
4 5 3
我想更改df1 sales列的值,取df2 sales列的值
我使用代码:
df1.loc[df1.item.isin(df2.item), ['sale']] = df2[['sale']]
我得到
df1 =
item sale
0 7 10.0
1 4 6.0
2 6 10.0
3 5 4.0
4 5 3.0
5 6 10.0
6 4 NaN
我想要的结果是:
df1 =
item sale
0 7 10.0
1 4 4.0
2 6 10.0
3 5 3.0
4 5 3.0
5 6 10.0
6 4 4.0
这两个数据帧按项目编号关联。因此,将项目编号设置为两个数据帧上的索引,使用df2在df1上运行一个方法,然后重置索引
df1 = df1.set_index("item")
df1.update(df2.set_index("item"))
df1.reset_index()
item sale
0 7 10.0
1 4 4.0
2 6 10.0
3 5 3.0
4 5 3.0
5 6 10.0
6 4 4.0
从未使用过
df.update
。我学到了一些新东西。回答得好,谢谢。成功了。你知道我的代码有什么问题吗。熊猫将尝试在索引上对齐,并根据对齐的索引分配值。因此,如果我们查看urdf1.item.isin(df2.item),['sale']
,返回的索引将是1,3,4,6;但是,对于相同的值,df2的索引是1,3,4,因此它将把1,3,4处的值传递给df1,这不是我们想要的,因为df2中没有6,所以它返回空值。这就是为什么第一步是将项目作为索引,这样熊猫就会按照我们想要的方式排列,然后事情就应该解决了。