pandas.DataFrame.combine#
- DataFrame.combine(other, func, fill_value=None, overwrite=True)[源代码]#
与另一个 DataFrame 进行列组合。
使用 func 对 DataFrame 和 other DataFrame 进行逐元素合并,以合并列。结果 DataFrame 的行和列索引将是两者的并集。
- 参数:
- otherDataFrame
要按列合并的 DataFrame。
- func函数
接受两个 Series 作为输入并返回一个 Series 或标量的函数。用于逐列合并两个 DataFrame。
- fill_value标量值,默认为 None
在将任何列传递给合并函数之前,用于填充 NaN 的值。
- overwritebool, 默认 True
如果为 True,则 self 中不存在于 other 的列将被 NaN 覆盖。
- 返回:
- DataFrame
提供的 DataFrame 的组合。
另请参阅
DataFrame.combine_first合并两个 DataFrame 对象,并默认使用调用方法的 DataFrame 中的非空值。
示例
使用一个简单的函数来选择较小的列进行合并。
>>> df1 = pd.DataFrame({"A": [0, 0], "B": [4, 4]}) >>> df2 = pd.DataFrame({"A": [1, 1], "B": [3, 3]}) >>> take_smaller = lambda s1, s2: s1 if s1.sum() < s2.sum() else s2 >>> df1.combine(df2, take_smaller) A B 0 0 3 1 0 3
使用一个真正的逐元素合并函数的示例。
>>> df1 = pd.DataFrame({"A": [5, 0], "B": [2, 4]}) >>> df2 = pd.DataFrame({"A": [1, 1], "B": [3, 3]}) >>> df1.combine(df2, np.minimum) A B 0 1 2 1 0 3
使用 fill_value 在将列传递给合并函数之前填充 None。
>>> df1 = pd.DataFrame({"A": [0, 0], "B": [None, 4]}) >>> df2 = pd.DataFrame({"A": [1, 1], "B": [3, 3]}) >>> df1.combine(df2, take_smaller, fill_value=-5) A B 0 0 -5.0 1 0 4.0
演示 overwrite 的使用以及当 DataFrame 之间轴不同时的行为的示例。
>>> df1 = pd.DataFrame({"A": [0, 0], "B": [4, 4]}) >>> df2 = pd.DataFrame( ... { ... "B": [3, 3], ... "C": [-10, 1], ... }, ... index=[1, 2], ... ) >>> df1.combine(df2, take_smaller) A B C 0 NaN NaN NaN 1 NaN 3.0 -10.0 2 NaN 3.0 1.0
>>> df1.combine(df2, take_smaller, overwrite=False) A B C 0 0.0 NaN NaN 1 0.0 3.0 -10.0 2 NaN 3.0 1.0
演示传入 DataFrame 的优先顺序。
>>> df2 = pd.DataFrame( ... { ... "B": [3, 3], ... "C": [1, 1], ... }, ... index=[1, 2], ... ) >>> df2.combine(df1, take_smaller) B C A 0 NaN NaN 0.0 1 3.0 NaN 0.0 2 3.0 NaN NaN
>>> df2.combine(df1, take_smaller, overwrite=False) B C A 0 NaN NaN 0.0 1 3.0 1.0 0.0 2 3.0 1.0 NaN