如何根据Python和/或R中多列的单元格值在Excel中附加值

问题描述 投票:-2回答:1

我是Python中的openpyxl和其他类似excel包的新手(甚至是Pandas)。我想要实现的是根据费用公式为每个产品追加可保留的最低价格。费用公式在下面的代码中,excel上的数据如下:

**Product** |**Cost** |**Price** |  **Lowest_Price**
ABC            32          66   
XYZ            15          32   
DEF            22          44   
JML            60          120  

我在Python 3.5上的代码下面有代码,但是这可能不是最优化的解决方案,我需要知道如何在Lowest_price列上追加最低值:

cost = 32 #Cost of product from cost column
price = 66 #Price of product from price column
Net = cost+5 #minimum profit required
lowest = 0 #lowest price that I can keep on the website for each product

#iterating over each row values and posting the lowest value adjacent to each product. 

for i in range(Net, price):
    expense = (i*0.15) + 15 #expense formula
    if i - expense >= Net:
        lowest = i
        break
print (lowest)  #this value should be printed adjacent to the price, in the Lowest price Column

Now if someone can help me doing that in Python and/or R. The reason I want in both Python and R is because I want to compare the time complexity, as I have a huge set of data to deal with.

我可以使用适用于任何excel格式的代码,例如xls或xlsx,只要速度很快

python r excel python-3.x python-2.7
1个回答
0
投票

我这样做了。

import pandas as pd

df = pd.read_excel('path/file.xls')

row = list(df.index)
for x in row:
    cost = df.loc[x,'Cost']
    price = df.loc[x,'Price']
    Net = cost+5
    df.loc[x,'Lowest_Price'] = 0
    for i in range(Net, price):
        expense = (i*0.15) + 15 #expense formula
        if i - expense >= Net:
            df.loc[x,'Lowest_Price'] = i
            break

#If you want to save it back to an excel file
df.to_excel('path/file.xls',index=False)

它给出了这个输出:

      Product  Cost  Price  Lowest_Price
0     ABC    32     66          62.0
1     XYZ    15     32           0.0
2     DEF    22     44           0.0
3     JML    60    120          95.0   
© www.soinside.com 2019 - 2024. All rights reserved.