温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - sum values of two csv files and results to a new file
python

python - 将两个csv文件的值相加并得出一个新文件

发布于 2020-03-27 11:00:18

我需要一些帮助,但不知道如何开始。

基本上,我有两个csv输入文件(来自2个不同的节点),并希望将这些值相加,结果将进入elasticsearch。

任何帮助是极大的赞赏...

CSV1

node    link    rate-in rate-out
node1   link1   10  20
node1   link2   30  50
node1   link3   40  60

CSV2

node    link    rate-in rate-out
node2   link1   20  10
node2   link2   50  70
node2   link3   80  40

结果->创建elasticsearch索引

node    link    rate-in rate-out
allnode link1   30  30
allnode link2   80  120
allnode link3   120 100

谢谢!

查看更多

查看更多

提问者
subok
被浏览
100
Joel Baumert 2019-07-03 20:37

pandas 对读取和处理CSV文件具有良好的支持。


    import pandas as pd

    df = pd.concat([
        pd.read_csv('csv1.csv'),
        pd.read_csv('csv2.csv')
    ])

    result=df.groupby('link', as_index=False).sum()
    result['node'] = 'allnode'

    result.to_csv('result.csv')

其中csv1.csv是:

    节点,链接,输入率,输出率
    节点1,链接1,10,20
    节点1,链接2,30,50
    节点1,链接3,40,60

而csv2.csv是:

    节点,链接,输入率,输出率
    node2,link1,20,10
    node2,link2,50,70
    node2,link3,80,40

result.csv文件将包含:


    链接,输入,输出,节点
    链接1,30,30,所有节点
    link2,80,120,所有节点
    链接3,120,100,所有节点

如果要重新排序列,可以通过提供订单列表来完成


    result[[
        'node','link','rate-in','rate-out'
    ]].to_csv('result.csv', index=False)