pandas.DataFrame.combine # 数据框。组合( other , func , fill_value = None , overwrite = True ) [来源] # 与另一个 DataFrame 执行按列组合。 使用func将 DataFrame 与其他DataFrame组合起来 ,以按元素组合列。生成的 DataFrame 的行索引和列索引将是两者的并集。 参数: 其他数据框要按列合并的 DataFrame。 函数函数以两个系列作为输入并返回系列或标量的函数。用于逐列合并两个数据框。 fill_value标量值,默认 None在将任何列传递给合并函数之前填充 NaN 的值。 覆盖布尔值,默认 True如果为 True,则self中不存在于other中的列将被 NaN 覆盖。 返回: 数据框提供的数据帧的组合。 也可以看看 DataFrame.combine_first组合两个 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 但是,如果两个数据帧中的相同元素为 None,则保留 None >>> df1 = pd.DataFrame({'A': [0, 0], 'B': [None, 4]}) >>> df2 = pd.DataFrame({'A': [1, 1], 'B': [None, 3]}) >>> df1.combine(df2, take_smaller, fill_value=-5) A B 0 0 -5.0 1 0 3.0 该示例演示了当数据帧之间的轴不同时覆盖的使用和行为。 >>> 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 展示传入数据帧的偏好。 >>> df2 = pd.DataFrame({'B': [3, 3], 'C': [1, 1], }, index=[1, 2]) >>> df2.combine(df1, take_smaller) A B C 0 0.0 NaN NaN 1 0.0 3.0 NaN 2 NaN 3.0 NaN >>> df2.combine(df1, take_smaller, overwrite=False) A B C 0 0.0 NaN NaN 1 0.0 3.0 1.0 2 NaN 3.0 1.0