首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于另一个df python pandas更新df列值

基于另一个df python pandas更新df列值
EN

Stack Overflow用户
提问于 2018-06-15 05:03:45
回答 2查看 106关注 0票数 0

我有两个df qty和df item_info,我正在尝试填充qty['item']中的NaN字段:(我将在此处引用SQL )

qty.ccy = item_info.ccy and qty.seller = item_info.seller,其中元组(ccy,卖家)是两个DFs上的唯一标识符。

代码语言:javascript
复制
DF qty
|  id | qty  |   item   | ccy | seller |
+-----+------+----------+-----+--------+
| 001 |  700 | CB04 box | USD | A1     |
| 002 |  500 | NaN      | AUS | A1     |
| 003 | 1500 | AB01 box | USD | B1     |



DF item_info
| sid | seller | ccy |   item   |
+-----+--------+-----+----------+
| AA1 | A1     | USD | CB04 box |
| AA2 | A2     | USD | CB01 Box |
| AA3 | A1     | AUS | AB01 box |

更新后的DF qty将如下所示

代码语言:javascript
复制
DF qty
|  id | qty  |   item   | ccy | seller |
+-----+------+----------+-----+--------+
| 001 |  700 | CB04 box | USD | A1     |
| 002 |  500 | AB01 box | AUS | A1     |
| 003 | 1500 | AB01 box | USD | B1     |
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-15 05:33:37

一种策略可能是在需要匹配的列上合并两个表,然后使用fillna。

代码语言:javascript
复制
values = qty.merge(item_info, on=["ccy", "seller"], 
             how="left", suffixes=("_qty", "_info"))["item_info"]
qty["item"] = qty["item"].fillna(value=values)
票数 0
EN

Stack Overflow用户

发布于 2018-06-15 05:43:49

以下方法可能会起作用。

代码语言:javascript
复制
import pandas as pd
import numpy as np
dfg_item_info = item_info.groupby(["ccy", "seller"])
def fillna(x):
    if np.isnan(x["C"]):
        return (dfg_item_info
               .get_group((x["ccy"], x["seller"]))["item"]
               .values[0])
    else:
        return x["item"]

qty["item] = qty["item"].apply(fillna, axis=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50865899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档