合并 csv 值并输出到 csv

Combine csv values and output to csv

我正在尝试读取 csv 文件并合并重复值,然后再次将这些值输出到 csv 中。

我的意图。

输入数据:

product name,quantity,unit price
product c,2,22.5
product a,1,10
product b,5,19.7
product a,3,10
product f,1,45.9
product d,4,34.5
product e,1,9.99
product c,3,22.5
product d,2,34.5
product e,4,9.99
product f,5,45.9
product b,7,19.7

输出数据:

product name,sales volume,sales revenue
product c,5,112.5
product a,4,40
product b,12,236.4
product f,6,275.4
product d,6,207
product e,5,49.95

这就是我目前所拥有的,我环顾四周,并不完全清楚我应该如何执行列表理解和组合值。 当我寻找答案时,它比可能需要的要复杂得多,但相对简单...

    record = []
    with open("items.csv", "r") as f:
        next(f)
        for values in f:
            split = values.rstrip().split(',')
            record.append(split)
        print(record)

您可以为此使用 pandas:

import pandas as pd

df = pd.read_csv('path/to/file')

然后计算sales revenuegroupbysum

df = df.assign(sales_revenue=lambda x: x['quantity'] * x['unit price']).groupby('product name').sum().reset_index()


  product name  quantity  sales_revenue
0    product a         4       20.00
1    product b        12       39.40
2    product c         5       45.00
3    product d         6       69.00
4    product e         5       19.98
5    product f         6       91.80

您可以将结果保存到 csv 文件

df.to_csv('new_file_name.csv', index=False)

pandas 是解决问题的方法。如果您还没有使用它,它会聚合整个表中的操作,因此您不必自己进行迭代。请注意,整个列可以在一个步骤中相乘。 groupby 将按每个产品对数据框进行分组,然后很容易求和。

import pandas as pd

df = pd.read_csv("f.csv")
df["sales revenue"] = df["quantity"] * df["unit price"]
del df["unit price"]
outdf = df.groupby("product name").sum()
outdf.rename(columns={"quantity": "sales volume"})
outdf.to_csv("f-out.csv")