pandas.DataFrame.combine#
- DataFrame.combine(other, func, fill_value=None, overwrite=True)[源代码]#
与另一个DataFrame执行列合并。
将DataFrame与 other DataFrame使用 func 要按元素合并列,请执行以下操作。生成的DataFrame的行索引和列索引将是两者的并集。
- 参数
- otherDataFrame
要按列合并的DataFrame。
- func功能
接受两个级数作为输入并返回一个级数或标量的函数。用于逐列合并两个数据帧。
- fill_value标量值,默认为无
在将任何列传递给合并函数之前用来填充NAN的值。
- overwrite布尔值,默认为True
如果为True,则列在 self 不存在于 other 将被NAN覆盖。
- 退货
- DataFrame
提供的DataFrames的组合。
参见
DataFrame.combine_first
组合两个DataFrame对象,并在调用该方法的Frame中默认为非空值。
示例
结合使用一个选择较小列的简单函数。
>>> 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,则不会保留该元素
>>> 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
演示如何使用 overwrite 以及当数据帧之间的轴不同时的行为。
>>> 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