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)
|