refining CountryColumnsMergerTest
This commit is contained in:
@@ -7,7 +7,7 @@ class CountryColumnsMerger:
|
|||||||
def mergeCountryColumnOfSrcIntoDst(src: pd.DataFrame, dst: pd.DataFrame):
|
def mergeCountryColumnOfSrcIntoDst(src: pd.DataFrame, dst: pd.DataFrame):
|
||||||
merged = pd.merge(
|
merged = pd.merge(
|
||||||
dst,
|
dst,
|
||||||
src,
|
CountryColumnsMerger._drop_duplicates(src['COUNTRY']),
|
||||||
how = 'left',
|
how = 'left',
|
||||||
left_index = True,
|
left_index = True,
|
||||||
right_index = True,
|
right_index = True,
|
||||||
@@ -21,10 +21,14 @@ class CountryColumnsMerger:
|
|||||||
.astype('string'))
|
.astype('string'))
|
||||||
return merged.drop(columns = ['COUNTRY_dst', 'COUNTRY_src'])
|
return merged.drop(columns = ['COUNTRY_dst', 'COUNTRY_src'])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _drop_duplicates(df):
|
||||||
|
return df[~df.index.duplicated(keep = 'first')]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _mergeSrcIntoDst(src, dst):
|
def _mergeSrcIntoDst(src, dst):
|
||||||
if (CountryColumnsMerger._notEqual(src, dst)) or (pd.isnull(src) and pd.isnull(dst)):
|
if CountryColumnsMerger._notEqual(src, dst):
|
||||||
raise Exception()
|
raise Exception(f'{src} != {dst}')
|
||||||
|
|
||||||
if pd.isnull(dst) and not pd.isnull(src):
|
if pd.isnull(dst) and not pd.isnull(src):
|
||||||
return src
|
return src
|
||||||
|
|||||||
@@ -55,14 +55,108 @@ class CountryColumnsMergerTest(unittest.TestCase):
|
|||||||
dtypes = {'COUNTRY': 'string'}),
|
dtypes = {'COUNTRY': 'string'}),
|
||||||
check_like = True)
|
check_like = True)
|
||||||
|
|
||||||
def test_shouldNotMergeCountryColumnOfSrcIntoDst_non_unique(self):
|
def test_mergeCountryColumnOfSrcIntoDst_non_unique_index(self):
|
||||||
self.shouldNotMergeCountryColumnOfSrcIntoDst(val_dst = 'United Kingdom', val_src = 'Germany')
|
|
||||||
|
|
||||||
def test_shouldNotMergeCountryColumnOfSrcIntoDst3(self):
|
|
||||||
self.shouldNotMergeCountryColumnOfSrcIntoDst(val_dst = None, val_src = None)
|
|
||||||
|
|
||||||
def shouldNotMergeCountryColumnOfSrcIntoDst(self, val_dst, val_src):
|
|
||||||
# Given
|
# Given
|
||||||
|
src_val = 'Germany'
|
||||||
|
dst_val = None
|
||||||
|
dst = TestHelper.createDataFrame(
|
||||||
|
columns = ['COUNTRY', 'TestColumn'],
|
||||||
|
data = [ ['United Kingdom', 'test1'],
|
||||||
|
['France', 'test2'],
|
||||||
|
[dst_val, 'test3']],
|
||||||
|
index = pd.Index(
|
||||||
|
name = 'VAERS_ID',
|
||||||
|
data = [
|
||||||
|
'4711',
|
||||||
|
'0815',
|
||||||
|
'123']),
|
||||||
|
dtypes = {'COUNTRY': 'string'})
|
||||||
|
|
||||||
|
src = TestHelper.createDataFrame(
|
||||||
|
columns = ['COUNTRY'],
|
||||||
|
data = [ ['United Kingdom'],
|
||||||
|
[src_val],
|
||||||
|
[src_val]],
|
||||||
|
index = pd.Index(
|
||||||
|
name = 'VAERS_ID',
|
||||||
|
data = [
|
||||||
|
'4711',
|
||||||
|
'123',
|
||||||
|
'123']),
|
||||||
|
dtypes = {'COUNTRY': 'string'})
|
||||||
|
|
||||||
|
# When
|
||||||
|
merged = CountryColumnsMerger.mergeCountryColumnOfSrcIntoDst(src, dst)
|
||||||
|
|
||||||
|
# Then
|
||||||
|
assert_frame_equal(
|
||||||
|
merged,
|
||||||
|
TestHelper.createDataFrame(
|
||||||
|
columns = ['COUNTRY', 'TestColumn'],
|
||||||
|
data = [ ['United Kingdom', 'test1'],
|
||||||
|
['France', 'test2'],
|
||||||
|
[src_val, 'test3']],
|
||||||
|
index = pd.Index(
|
||||||
|
name = 'VAERS_ID',
|
||||||
|
data = [
|
||||||
|
'4711',
|
||||||
|
'0815',
|
||||||
|
'123']),
|
||||||
|
dtypes = {'COUNTRY': 'string'}),
|
||||||
|
check_like = True)
|
||||||
|
|
||||||
|
def test_mergeCountryColumnOfSrcIntoDst_None_None(self):
|
||||||
|
# Given
|
||||||
|
src_val = None
|
||||||
|
dst_val = None
|
||||||
|
dst = TestHelper.createDataFrame(
|
||||||
|
columns = ['COUNTRY', 'TestColumn'],
|
||||||
|
data = [ ['United Kingdom', 'test1'],
|
||||||
|
['France', 'test2'],
|
||||||
|
[dst_val, 'test3']],
|
||||||
|
index = pd.Index(
|
||||||
|
name = 'VAERS_ID',
|
||||||
|
data = [
|
||||||
|
'4711',
|
||||||
|
'0815',
|
||||||
|
'123']),
|
||||||
|
dtypes = {'COUNTRY': 'string'})
|
||||||
|
|
||||||
|
src = TestHelper.createDataFrame(
|
||||||
|
columns = ['COUNTRY'],
|
||||||
|
data = [ ['United Kingdom'],
|
||||||
|
[src_val]],
|
||||||
|
index = pd.Index(
|
||||||
|
name = 'VAERS_ID',
|
||||||
|
data = [
|
||||||
|
'4711',
|
||||||
|
'123']),
|
||||||
|
dtypes = {'COUNTRY': 'string'})
|
||||||
|
|
||||||
|
# When
|
||||||
|
merged = CountryColumnsMerger.mergeCountryColumnOfSrcIntoDst(src, dst)
|
||||||
|
|
||||||
|
# Then
|
||||||
|
assert_frame_equal(
|
||||||
|
merged,
|
||||||
|
TestHelper.createDataFrame(
|
||||||
|
columns = ['COUNTRY', 'TestColumn'],
|
||||||
|
data = [ ['United Kingdom', 'test1'],
|
||||||
|
['France', 'test2'],
|
||||||
|
[src_val, 'test3']],
|
||||||
|
index = pd.Index(
|
||||||
|
name = 'VAERS_ID',
|
||||||
|
data = [
|
||||||
|
'4711',
|
||||||
|
'0815',
|
||||||
|
'123']),
|
||||||
|
dtypes = {'COUNTRY': 'string'}),
|
||||||
|
check_like = True)
|
||||||
|
|
||||||
|
def test_shouldNotMergeCountryColumnOfSrcIntoDst_non_unique(self):
|
||||||
|
# Given
|
||||||
|
val_dst = 'United Kingdom'
|
||||||
|
val_src = 'Germany'
|
||||||
dst = TestHelper.createDataFrame(
|
dst = TestHelper.createDataFrame(
|
||||||
columns = ['COUNTRY'],
|
columns = ['COUNTRY'],
|
||||||
data = [ [val_dst]],
|
data = [ [val_dst]],
|
||||||
|
|||||||
Reference in New Issue
Block a user