python - 如何根据另一个DataFrame中的值更新DataFrame中的值?

标签 python pandas dataframe

假设我有以下 DataFrame:

容器:

Key ContainerCode       Quantity
1   P-A1-2097-05-B01    0
2   P-A1-1073-13-B04    0
3   P-A1-2024-09-H05    0
5   P-A1-2018-08-C05    0
6   P-A1-2089-03-C08    0
7   P-A1-3033-16-H07    0
8   P-A1-3035-18-C02    0
9   P-A1-4008-09-G01    0

库存:

Key SKU     ContainerCode       Quantity
1   22-3-1  P-A1-4008-09-G01    1
2   2132-12 P-A1-3033-16-H07    55
3   222-12  P-A1-4008-09-G01    3
4   4561-3  P-A1-3083-12-H01    126

如何根据库存中的信息更新容器中的数量值以反射(reflect)每个容器中的单位数量?请注意,多个 SKU 可以驻留在单个 ContainerCode 中,因此我们需要添加数量,而不仅仅是替换它,并且特定 ContainerCode 的 Containers 中可能有多个条目。

实现这一目标的可能方法有哪些,它们的相对优缺点是什么?

编辑

以下代码似乎是一个很好的测试用例:

import itertools
import pandas as pd
import numpy as np

inventory = pd.DataFrame({'Container Code':['A1','A2','A2','A4'],
                               'Quantity':[10,87,2,44],
                               'SKU':['123-456','234-567','345-678','456-567']})

containers = pd.DataFrame({'Container Code':['A1','A2','A3','A4'],
                               'Quantity':[2,0,8,4],
                               'Path Order':[1,2,3,4]})

summedInventory = inventory.groupby('Container Code')['Quantity'].sum()

print('Containers Data Frame')
print(containers)
print('\nInventory Data Frame')
print(inventory)
print('\nSummed Inventory List')
print(summedInventory)
print('\n')

newContainers = containers.drop('Quantity', axis=1). \
     join(inventory.groupby('Container Code').sum(), on='Container Code')
print(newContainers)

这似乎产生了所需的输出。

我还尝试使用常规合并:

pd.merge(containers.drop('Quantity', axis=1), \
    summedInventory,how='inner',left_on='Container Code', right_index=True)

但这会产生“IndexError:列表索引超出范围”

有什么想法吗?

最佳答案

我希望我正确理解了您的情况。我认为你可以使用:

containers.drop('Quantity', axis = 1).\
           join(inventory.groupby('ContainerCode').sum(), \
                on = 'ContainerCode')
  1. 我首先从容器中删除数量,因为您不需要它 - 我们将从库存中创建它。
  2. 然后,我们按容器代码对库存进行分组,以汇总与每个容器相关的数量。
  3. 然后,我们执行两者之间的连接,容器中存在的每个容器代码都会收到库存中的总数量

关于python - 如何根据另一个DataFrame中的值更新DataFrame中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788531/

相关文章:

python - 将端口添加到 QGraphicsPixmapItem 对象

python - 删除具有给定子字符串值的行

python - 合并行 pandas 数据框

r - 当 x 发生时如何将 tibble 从日期表转换为具有 x 的分类数据的日期表

Python-将文本写入文件?

python - 如何从图像中过滤特定的图像坐标

python - QLineEdit 对象的 PyQt 集合

python - 删除 Pandas 数据框中多次出现的重复值

python - 如何加速非常慢的 Pandas 应用功能?

python - 从具有相似索引的其他 DataFrame 的列中创建 pandas DataFrame