繁体   English   中英

for 循环,用于根据 Python 中的条件将每一行的值与另一个表中的特定列相乘

[英]for Loop for multiplying a value of each row with a specific column from another table based on condition in Python

我有A表

姓名 阶段 产品 一个
XYD1234 产品 4643 A、C、T、Y 1 0
FGY4567 测试 4739 A, U, p, Y 0 1
YUD4568 QUE 45632 我,Y,O,P 0 1
OKE4556 97474 A、C、P、Y 1 0

表 B:

阶段 一个
产品 10 5
测试 20 10
QUE 30 15
49 25

这就是我想要的 output。
如果每行的阶段与表 B 中的阶段匹配,则将表 A 的 A 列与表 B 的 A 列相乘。

姓名 阶段 产品 一个 舞台 B_STAGE
XYD1234 产品 4643 A、C、T、Y 1 0 10 0
FGY4567 测试 4739 A, U, p, Y 0 1 0 10
YUD4568 QUE 45632 我,Y,O,P 0 1 0 15
OKE4556 97474 A、C、P、Y 1 0 49 0

如果这是我拥有的代码,但它不能正常工作。

for i in range(0, len(A)):
  A.loc['Stage'] == B['Stage']
  A['A_Stage'] = A['A'] * B['A']
import pandas as pd
df1 = pd.DataFrame({'NAME':['XYD1234','FGY4567','YUD4568','OKE4556'],
                    'STAGE':['PROD','TEST','QUE','STACK'], 
                    'Quan':[4643,4739,45632,97474], 
                    'Products':['A, C, T, Y','A, U, p, Y','I, Y, O, P','A, C, P, Y'], 
                    'A':[1, 0, 0, 1], 
                    'B':[0, 1, 1, 0]})
df2 = pd.DataFrame({'STAGE':['PROD','TEST','QUE','STACK'],
                    'A':[10, 20, 30, 49], 
                    'B':[5, 10, 15, 25]})
df2.columns = ['STAGE', 'A_STAGE', 'B_STAGE']
df1 = df1.merge(df2, on='STAGE')
df1.loc[:,'A_STAGE'] *= df1.loc[:,'A']
df1.loc[:,'B_STAGE'] *= df1.loc[:,'B']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM