1
datanew = [{"version": "Adobe 1.0.2"}, {"version": "Microsoft 1.3.27"}, {"version": "Test 0.0.2"}]

datasum = [{"version": "Adobe 1.0.2","number" : 1}, {"version": "Microsoft 1.3.27", "number" : 2}]

I want to compare two pandas dataframes (datasum, datanew) and in datasum increase the column ''number" by 1 if the string appears in both dataframes, if not I want to copy the dataset from datanew into datasum with the value 1 in "number".

Expect new datasum with:

datasum = [{"version": "Adobe 1.0.2","number" : 2}, {"version": "Microsoft 1.3.27", "number" : 3}, {"version": "Test 0.0.2","number" : 1}

Do you have any solution for my problem?

Martin Evans
  • 45,791
  • 17
  • 81
  • 97

1 Answers1

0
import pandas as pd

datanew = [{"version": "Adobe 1.0.2"}, {"version": "Microsoft 1.3.27"}, {"version": "Test 0.0.2"}]

datasum = [{"version": "Adobe 1.0.2","number" : 1}, {"version": "Microsoft 1.3.27", "number" : 2}]

df1 = pd.DataFrame(datanew).assign(number=1)

df2 = pd.DataFrame(datasum)

df = pd.concat([df1, df2]).groupby('version', as_index=False).sum()

#             version  number
# 0       Adobe 1.0.2       2
# 1  Microsoft 1.3.27       3
# 2        Test 0.0.2       1
SultanOrazbayev
  • 14,900
  • 3
  • 16
  • 46