根据来自另一个表的多列在一个表中创建一列[python]

miwa_p

我正在创建一个csv表,其中包含我所有订单的信息。现在我想卖掉那些物品,但是我想根据物品的价格增加额外的附加费。我创建了一个带有surcharge的新表,在其中有称为'from'和'to'的列,在这里我必须比较商品价格,然后在销售价格中包含正确的附加费。

但是我无法做到这一点。我尝试了不同的方法,但似乎没有一种有效。你能帮忙的话,我会很高兴 :)

我的桌子看起来像这样:

    OrderNo      NetPerPiece costsDividedPerOrder  HandlingPerPiece

0  7027514279        44.24     0.008007          0.354232

1  7027514279        15.93     0.008007          0.127552

2  7027514279        15.93     0.008007          0.127552

3  7027514279        15.93     0.008007          0.127552

4  7027514279        15.93     0.008007          0.127552
surcharges = {'surcharge': [0.35, 0.25, 0.2, 0.15, 0.12, 0.1],
'from': [0, 20, 200, 500, 1500, 5000], 
'to' : [20, 200, 500, 1500, 5000,1000000000] }
surchargeTable = DataFrame(surcharges, columns=['surcharge', 'from', 'to'])


productsPerOrder['NetPerpieceSale'] = numpy.where(((productsPerOrder['NetPerPiece'] >= surchargeTable['from']) & (productsPerOrder['NetPerPiece'] < surchargeTable['to'])), surchargeTable['surcharge'])


#I also tried this:

for index, row in productsPerOrder.iterrows():
        if row['NetPerPiece'] >= surchargeTable['from'] & row['NetPerPiece'] < surchargeTable['to']:
                productsPerOrder.loc[index,'NerPerPieceSale'] = surchargeTable.loc[row,'NetPerPieceSale'].values(0)

我希望它看起来像这样:

 OrderNo   NetPerPiece costsDividedPerOrder  HandlingPerPiece NetPerPieceSale

0  7027514279   44.24           0.008007          0.354232    0.25

1  7027514279   15.93           0.008007          0.127552    0.35

2  7027514279   15.93           0.008007          0.127552    0.35

3  7027514279   15.93           0.008007          0.127552    0.35

4  7027514279   15.93           0.008007          0.127552    0.35

提醒一下,包含项目的文件更大,我只显示了csv列表的开头。所以桌子长短不一

SurchargeTable看起来像这样:

 surcharge  from          to
0       0.35     0          20
1       0.25    20         200
2       0.20   200         500
3       0.15   500        1500
4       0.12  1500        5000
5       0.10  5000  1000000000
斯科特·波士顿

另一种方法是使用pd.IntervalIndexmap

# Create IntervalIndex on surchageTable dataframe
surchargeTable = surchargeTable.set_index(pd.IntervalIndex.from_arrays(surchargeTable['from'],
                                                                       surchargeTable['to']))

#Use map to pd.Series created from surchargeTable IntervalIndex and surcharge column.
productsPerOrder['NetPerPieceSale'] = productsPerOrder['NetPerPiece'].map(surchargeTable['surcharge'])

productsPerOrder

输出:

      OrderNo  NetPerPiece  costsDividedPerOrder  HandlingPerPiece  NetPerPieceSale
0  7027514279        44.24              0.008007          0.354232             0.25
1  7027514279        15.93              0.008007          0.127552             0.35
2  7027514279        15.93              0.008007          0.127552             0.35
3  7027514279        15.93              0.008007          0.127552             0.35
4  7027514279        15.93              0.008007          0.127552             0.35

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一列和另一个表中的值创建一个新列

如何在表中创建一个列,其中值来自另一个表中另一列的总和

如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

如何创建引用另一个表中另一列的计算列?

根据另一个表中另一列的内容更新表列

如何使用 SQL 中另一个表中的一列创建一个新表?

根据另一个表创建条件列

为另一个表中的每个元素创建一个包含一列的新表

根据另一个表中的条件更新一个表中的列

如何根据另一个表kdb中的列从表中获取一列

根据来自另一个数据框的转换表替换列中的字符

计算另一个表中另一列的列值

根据另一个表中一列的总和在一个表中设置两个值

根据条件更新列并为每次更新在另一个表中创建一个新行

根据另一个列ID汇总来自同一表的数据

根据R中的另一个表在数据集中创建“标志”列

尝试使用Python / pandas根据来自另一个数据框的一列的内部和创建一个新的数据框

MYSQL 从另一个表更新多列

SQL选择-根据另一个表中的ID两次返回同一列

根据另一个表的频率从一个表中选择列?

根据另一个表中的列更新表中的列

根据另一个表中多列之间的范围在表中插入多行

根据列在另一个表中的列更新表

根据mysql中另一个表中的值更新一个表中的列

mysql根据另一个3列值更新同一表中一列的值

根据来自另一个表的有序值更新列

当JOIN为多列时处理来自另一个表的UPDATE

如何基于另一个表中另一列的值更新表中的列

FROM子句子查询从另一个表中添加一列