鱼C论坛

 找回密码
 立即注册
查看: 1615|回复: 3

[已解决]pandas 关于多个条件merge的问题

[复制链接]
发表于 2023-9-25 23:45:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 laiyuanjie 于 2023-9-25 23:49 编辑

我有两个表,一个是期初库存数量,,一个是当天的增减数的表,,

然后要将左表的库存数量引用到右表的这个位置来

在pandas库里要怎么做



用右表的这个表来做连接


最重要的一点是,,,我同一个款号里面有不同的颜色,,有不同的尺寸,还有不同的计算单位,,,所以在merge~~~on的时候要好几个条件,,我试过用 on =['商品编码‘,‘尺寸’,‘颜色’,‘单位’]   这样的方式去弄,,好像不行
最佳答案
2023-9-25 23:45:26
在Pandas中,你可以使用merge函数来合并两个表格,并根据多个条件进行匹配和合并。

首先,假设你有两个表格:df1 为期初库存数量表,df2 为当天增减数的表。你可以按照以下步骤进行合并:

1. 确定合并条件:找出可以将两个表格关联起来的共同列或列组合。例如,假设你有一个名为 ProductID 的列可以用来匹配。

2. 使用 merge 函数进行合并:指定左表格、右表格以及合并条件。

   merged_df = pd.merge(df1, df2, on='ProductID')   
   这将根据 ProductID 列将两个表格进行合并,生成一个包含匹配行的新数据框。

3. 更新右表格的库存数量:假设你想要将左表格的库存数量引用到右表格的相应位置。

   merged_df['Inventory'] = merged_df['Initial_Inventory']   
   这将用左表格的 Initial_Inventory 列的值更新右表格的 Inventory 列。

下面是一个完整的示例代码:
import pandas as pd# 创建示例数据框df1 = pd.DataFrame({'ProductID': [1, 2, 3],                    'Initial_Inventory': [10, 20, 30]})df2 = pd.DataFrame({'ProductID': [1, 2, 3],                    'Change_Inventory': [-5, 10, -15]})# 合并两个表格merged_df = pd.merge(df1, df2, on='ProductID')# 更新右表格的库存数量merged_df['Inventory'] = merged_df['Initial_Inventory']print(merged_df)
这将输出合并后的数据框,其中包含更新后的库存数量。你可以根据实际的列名和数据进行修改和适应。

希望这可以帮助到你!如果有任何进一步的问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
回答可能有误,多多谅解!
微信图片_20230925234041.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-25 23:45:19 | 显示全部楼层
你可以使用 merge 函数,将两个表按照特定的条件合并。具体来说,你需要将左表的库存数量与右表的增减数相加,得到当天的实际库存数量。以下是代码示例:
import pandas as pd

# 创建左表
df1 = pd.DataFrame({'产品编号': ['A', 'B', 'C'], '期初库存数量': [100, 200, 300]})

# 创建右表
df2 = pd.DataFrame({'日期': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02'], 
                    '产品编号': ['A', 'B', 'B', 'C'], '增减数量': [10, -20, 30, -50]})

# 合并两个表
df_merge = pd.merge(df2, df1, on='产品编号', how='left')

# 计算实际库存数量
df_merge['实际库存数量'] = df_merge['期初库存数量'] + df_merge['增减数量']

# 删除不需要的列
df_merge.drop('期初库存数量', axis=1, inplace=True)

print(df_merge)

输出结果为:
          日期 产品编号  增减数量  实际库存数量
0  2021-01-01     A     10       110
1  2021-01-01     B    -20       180
2  2021-01-02     B     30       230
3  2021-01-02     C    -50       250

在上述代码中,我们首先创建了左表和右表,然后使用 merge 函数将它们按照产品编号合并。我们选择 left 方式合并,这意味着我们将保留左表中所有的行,而右表中没有匹配到的行将被填充为 NaN 。接下来,我们计算了实际库存数量,并删除了不需要的列。最后,我们输出了合并后的表格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-25 23:45:26 | 显示全部楼层    本楼为最佳答案   
在Pandas中,你可以使用merge函数来合并两个表格,并根据多个条件进行匹配和合并。

首先,假设你有两个表格:df1 为期初库存数量表,df2 为当天增减数的表。你可以按照以下步骤进行合并:

1. 确定合并条件:找出可以将两个表格关联起来的共同列或列组合。例如,假设你有一个名为 ProductID 的列可以用来匹配。

2. 使用 merge 函数进行合并:指定左表格、右表格以及合并条件。

   merged_df = pd.merge(df1, df2, on='ProductID')   
   这将根据 ProductID 列将两个表格进行合并,生成一个包含匹配行的新数据框。

3. 更新右表格的库存数量:假设你想要将左表格的库存数量引用到右表格的相应位置。

   merged_df['Inventory'] = merged_df['Initial_Inventory']   
   这将用左表格的 Initial_Inventory 列的值更新右表格的 Inventory 列。

下面是一个完整的示例代码:
import pandas as pd# 创建示例数据框df1 = pd.DataFrame({'ProductID': [1, 2, 3],                    'Initial_Inventory': [10, 20, 30]})df2 = pd.DataFrame({'ProductID': [1, 2, 3],                    'Change_Inventory': [-5, 10, -15]})# 合并两个表格merged_df = pd.merge(df1, df2, on='ProductID')# 更新右表格的库存数量merged_df['Inventory'] = merged_df['Initial_Inventory']print(merged_df)
这将输出合并后的数据框,其中包含更新后的库存数量。你可以根据实际的列名和数据进行修改和适应。

希望这可以帮助到你!如果有任何进一步的问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
回答可能有误,多多谅解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-25 23:52:11 | 显示全部楼层
Mike_python小 发表于 2023-9-25 23:45
在Pandas中,你可以使用merge函数来合并两个表格,并根据多个条件进行匹配和合并。

首先,假设你有两个表 ...

最重要的一点是,,,我同一个款号里面有不同的颜色,,有不同的尺寸,还有不同的计算单位,,,所以在merge~~~on的时候要好几个条件,,我试过用 on =['商品编码‘,‘尺寸’,‘颜色’,‘单位’]   这样的方式去弄,,好像不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 10:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表