def test_append_time_domain(test_pd_df, test_df_mixed, other, time, inplace): df_year = IamDataFrame(test_pd_df[IAMC_IDX + [2005]], meta=test_df_mixed.meta) df_time = IamDataFrame(test_pd_df[IAMC_IDX + [2010]].rename( {2010: time}, axis="columns")) # append `df_time` to `df_year` if other == "time": if inplace: obs = df_year.copy() obs.append(df_time, inplace=True) else: obs = df_year.append(df_time) # assert that original object was not modified assert df_year.year == [2005] # append `df_year` to `df_time` else: if inplace: obs = df_time.copy() obs.append(df_year, inplace=True) else: obs = df_time.append(df_year) # assert that original object was not modified assert df_time.time == pd.Index([datetime(2010, 7, 21)]) assert_iamframe_equal(obs, test_df_mixed)
def test_concat_time_domain(test_pd_df, test_df_mixed, time, reverse): df_year = IamDataFrame(test_pd_df[IAMC_IDX + [2005]], meta=test_df_mixed.meta) df_time = IamDataFrame(test_pd_df[IAMC_IDX + [2010]].rename( {2010: time}, axis="columns")) # concat `df_time` to `df_year` if reverse: obs = concat([df_time, df_year]) else: obs = concat([df_year, df_time]) # assert that original objects were not modified assert df_year.year == [2005] assert df_time.time == pd.Index([datetime(2010, 7, 21)]) assert_iamframe_equal(obs, test_df_mixed)
def test_concat_non_default_index(): # Test that merging two IamDataFrames with identical, non-standard index dimensions # preserves the index. df1 = IamDataFrame( pd.DataFrame( [["model_a", "scenario_a", "region_a", "variable_a", "unit", 1, 1] ], columns=IAMC_IDX + ["version", 2005], ), index=META_IDX + ["version"], ) df2 = IamDataFrame( pd.DataFrame( [["model_a", "scenario_a", "region_a", "variable_a", "unit", 2, 2] ], columns=IAMC_IDX + ["version", 2005], ), index=META_IDX + ["version"], ) exp = IamDataFrame( pd.DataFrame( [ [ "model_a", "scenario_a", "region_a", "variable_a", "unit", 1, 1 ], [ "model_a", "scenario_a", "region_a", "variable_a", "unit", 2, 2 ], ], columns=IAMC_IDX + ["version", 2005], ), index=META_IDX + ["version"], ) assert_iamframe_equal(exp, concat([df1, df2]))
def test_concat_single_item(test_df): """Check that calling concat on a single-item list returns identical object""" obs = concat([test_df]) assert_iamframe_equal(obs, test_df)