diff --git a/src/CountriesMerger.py b/src/CountriesMerger.py new file mode 100644 index 00000000000..0b3133ffaa6 --- /dev/null +++ b/src/CountriesMerger.py @@ -0,0 +1,10 @@ +import pandas as pd + + +class CountriesMerger: + + @staticmethod + def mergeCountriesSerieses(countriesSeriesA, countriesSeriesB): + return (pd + .merge(countriesSeriesA, countriesSeriesB, how='left', left_index=True, right_index=True) + .apply(lambda countries: sorted(set(countries.dropna())), axis='columns')) diff --git a/src/CountriesMergerTest.py b/src/CountriesMergerTest.py new file mode 100644 index 00000000000..80db37af12c --- /dev/null +++ b/src/CountriesMergerTest.py @@ -0,0 +1,24 @@ +import unittest +import pandas as pd +from CountriesMerger import CountriesMerger +from pandas.testing import assert_series_equal + + +class CountriesMergerTest(unittest.TestCase): + + def test_mergeCountriesSerieses(self): + # Given + countriesSeriesA = pd.Series({'NO72A': 'CountryA-1', 'EW096': 'CountryA-2'}, name='countriesSeriesA') + countriesSeriesB = pd.Series({'NO72A': 'CountryB-1', 'FS192': 'CountryB-2'}, name='countriesSeriesB') + + # When + mergedCountries = CountriesMerger.mergeCountriesSerieses(countriesSeriesA, countriesSeriesB) + + # Then + assert_series_equal( + mergedCountries, + pd.Series( + { + 'NO72A': ['CountryA-1', 'CountryB-1'], + 'EW096': ['CountryA-2'] + }))