48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import numpy as np
 | 
						|
import pytest
 | 
						|
 | 
						|
import pandas as pd
 | 
						|
import pandas._testing as tm
 | 
						|
 | 
						|
 | 
						|
class TestCombine:
 | 
						|
    @pytest.mark.parametrize(
 | 
						|
        "data",
 | 
						|
        [
 | 
						|
            pd.date_range("2000", periods=4),
 | 
						|
            pd.date_range("2000", periods=4, tz="US/Central"),
 | 
						|
            pd.period_range("2000", periods=4),
 | 
						|
            pd.timedelta_range(0, periods=4),
 | 
						|
        ],
 | 
						|
    )
 | 
						|
    def test_combine_datetlike_udf(self, data):
 | 
						|
        # GH#23079
 | 
						|
        df = pd.DataFrame({"A": data})
 | 
						|
        other = df.copy()
 | 
						|
        df.iloc[1, 0] = None
 | 
						|
 | 
						|
        def combiner(a, b):
 | 
						|
            return b
 | 
						|
 | 
						|
        result = df.combine(other, combiner)
 | 
						|
        tm.assert_frame_equal(result, other)
 | 
						|
 | 
						|
    def test_combine_generic(self, float_frame):
 | 
						|
        df1 = float_frame
 | 
						|
        df2 = float_frame.loc[float_frame.index[:-5], ["A", "B", "C"]]
 | 
						|
 | 
						|
        combined = df1.combine(df2, np.add)
 | 
						|
        combined2 = df2.combine(df1, np.add)
 | 
						|
        assert combined["D"].isna().all()
 | 
						|
        assert combined2["D"].isna().all()
 | 
						|
 | 
						|
        chunk = combined.loc[combined.index[:-5], ["A", "B", "C"]]
 | 
						|
        chunk2 = combined2.loc[combined2.index[:-5], ["A", "B", "C"]]
 | 
						|
 | 
						|
        exp = (
 | 
						|
            float_frame.loc[float_frame.index[:-5], ["A", "B", "C"]].reindex_like(chunk)
 | 
						|
            * 2
 | 
						|
        )
 | 
						|
        tm.assert_frame_equal(chunk, exp)
 | 
						|
        tm.assert_frame_equal(chunk2, exp)
 |