如何使用python将csv和列中的值求和

时间:2019-06-30 09:49:46

标签: python python-3.x pandas csv

我有一个这样的csv文件:

file1.csv
date        item1    spec    count
2019-03-29  book     blue     10
2019-03-30  shirt    green    11
...
2019-04-25  book     blue     20
2019-04-26  shirt    green    15

和另一个这样的csv文件:

file2.csv
date        item1    spec    count
2019-03-29  book     blue     5
2019-03-30  shirt    green    4
...
2019-04-25  book     blue     7
2019-04-26  shirt    green    8

我想将文件合并成这样:

fileResult.csv
date        item1    spec    count
2019-03-29  book     blue     15
2019-03-30  shirt    green    15
...
2019-04-25  book     blue     27
2019-04-26  shirt    green    23

有人可以帮我解决这个问题吗?

非常感谢

3 个答案:

答案 0 :(得分:4)

如果两个数据框都具有相同的 shape 形状(行,列的数量相同),并且数据与示例中的 aligned 对齐,我们可以简单地做到: / p>

df1['count'] = df1['count'] + df2['count']

print(df1)
         date  item1   spec  count
0  2019-03-29   book   blue     15
1  2019-03-30  shirt  green     15
2  2019-04-25   book   blue     27
3  2019-04-26  shirt  green     23

其他使用merge

final = df1.merge(df2, on=['date', 'item1', 'spec'])
final['count'] = final.pop('count_x')+ final.pop('count_y')

         date  item1   spec  count
0  2019-03-29   book   blue     15
1  2019-03-30  shirt  green     15
2  2019-04-25   book   blue     27
3  2019-04-26  shirt  green     23

答案 1 :(得分:3)

先读取csv并保存在数据框中
使用pd.concat()连接两个文件
groupby date,item,spec并使用groupby()

对计数求和
df1 = pd.read_csv('csv1.csv')
df2 = pd.read_csv('csv2.csv')
df3 = pd.concat([df1,df2])
final_result= df3.groupby(['date','item','spec'],as_index=False)['count'].sum()

我希望它能解决您的问题

答案 2 :(得分:1)