代码之家  ›  专栏  ›  技术社区  ›  Pradnya Bhagat

如何用不同的两个csv文件相乘两列并使用pandas返回第一个csv文件的结果

  •  1
  • Pradnya Bhagat  · 技术社区  · 8 年前

    我有两个csv文件,其中第一个csv文件包含price列,第二个csv文件包含数量,我尝试将这两列相乘,并用第一个csv将结果保存到新列中

    第一,CSV

    Code    Description                                Unit    Price
    110101  STATIONARY BICYCLE INDOOR USE               SET    120.25
    110106  TREADMILL EXERCISE MACHINE, ELEC. AC110V    SET    950.22
    110107  TREADMILL EXERCISE MACHINE, ELEC. AC220V    SET    1000 
    110110  EXERCISER ROWING INDOOR USE                 SET    450
    110120  BARBELL SET                                 SET    100
    

    第二、CSV

    Code     Quantity
    110106  210
    110107  220
    110110  230
    110120  240
    110122  250
    

    预期的产出是

    第一,CSV

    Code    Description                                 Unit   Price    Total
    110101  STATIONARY BICYCLE INDOOR USE               SET    120.25   25252.5
    110106  TREADMILL EXERCISE MACHINE, ELEC. AC110V    SET    150.22   33048.4
    110107  TREADMILL EXERCISE MACHINE, ELEC. AC220V    SET    100      23000
    110110  EXERCISER ROWING INDOOR USE                 SET    40       9600
    110120  BARBELL SET                                 SET    100      25000
    

    我只能读取文件

    import pandas as pd
    
    df = pd.read_csv("QuoteCSV.csv", parse_dates=True)
    print(df)
    df1=pd.read_csv("itemcode.csv",index_col="Price", parse_dates=True)
    print(df1)
    

    更新:

       import pandas as pd
    
        a = pd.read_csv("itemcode.csv")
        b = pd.read_csv("QuoteCSV.csv")
        b = b.dropna(axis=1)
        merged = a.merge(b, on='Code')
        merged.to_csv("result.csv", index=False)
        c = pd.read_csv("result.csv")
        c['Total'] = c['Price'] * c['Quantity']
    

    但它不返回任何结果

    2 回复  |  直到 8 年前
        1
  •  0
  •   Alkesh Mahajan    8 年前

    试试这个

    df["Total"]=df['Price'].multiply(df1['Quantity'], axis=0)
    print(df)
    
        2
  •  0
  •   piRSquared    8 年前

    使用 map

    First.assign(
        Total=First.Price * First.Code.map(dict(zip(Second.Code, Second.Quantity))))