【问题标题】:How to multiply two columns with different two csv file and return result in first csv file using Pandas如何将两列与不同的两个 csv 文件相乘并使用 Pandas 在第一个 csv 文件中返回结果
【发布时间】:2018-06-05 05:39:31
【问题描述】:

我有两个 CSV 文件,其中第一个 csv 文件包含价格列,第二个 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']

但它没有返回任何结果

【问题讨论】:

  • 我假设您希望将这些按'Code' 列排列。如果我是对的,您预计输出不正确。
  • 为什么不将Quantity合并到Code上的其他数据帧,那么就不需要两个数据帧了?
  • @student 我已经更新了我的问题并将两个 csv 合并到单个 result.cvs 但它仍然没有返回总数
  • 当你调用c.head()时,它没有返回任何东西?
  • 这个用于添加 csv ---> df.to_csv('new_or_old.csv', mode='a', header=False)

标签: python pandas csv multiple-columns multiplication


【解决方案1】:

试试这个作品

df["Total"]=df['Price'].multiply(df1['Quantity'], axis=0)
print(df)

【讨论】:

  • 它工作正常。我只是试试。检查列名和数据框名也
  • 它在 logcat 中打印正确的结果,但不附加到 csv 文件中
  • 乘法工作na yar .. 好的,我会试试这个
【解决方案2】:

使用map

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多