千家信息网

pandas中如何使用combine和combine_first函数

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章将为大家详细讲解有关pandas中如何使用combine和combine_first函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。combine在数据合
千家信息网最后更新 2025年11月11日pandas中如何使用combine和combine_first函数

这篇文章将为大家详细讲解有关pandas中如何使用combine和combine_first函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

combine

在数据合并的过程中,我们可能需要对对应位置的值进行一定的计算,pandas提供了combine和combine_first函数方法来进行这方面的合作操作。

df.combine(    other: 'DataFrame',    func,    fill_value=None,    overwrite: 'bool' = True,) -> 'DataFrame'

比如,数据合并的时候取单元格最小的值

In [79]: df1 = pd.DataFrame({'A': [0, 0], 'B': [4, 4]})In [80]: df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})In [81]: df1Out[81]:    A  B0  0  41  0  4In [82]: df2Out[82]:    A  B0  1  31  1  3In [83]: take_smaller = lambda s1, s2: s1 if s1.sum() < s2.sum() else s2In [84]: df1.combine(df2, take_smaller)Out[84]:    A  B0  0  31  0  3# 也可以调用numpy的函数In [85]: import numpy as npIn [86]: df1.combine(df2, np.minimum)Out[86]:    A  B0  0  31  0  3

fill_value填充缺失值

In [87]: df1 = pd.DataFrame({'A': [0, 0], 'B': [None, 4]})In [87]: df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})In [88]: df1Out[88]:    A    B0  0  NaN1  0  4.0In [89]: df2Out[89]:    A  B0  1  31  1  3In [90]: df1.combine(df2, take_smaller, fill_value=-88)Out[90]:    A     B0  0 -88.01  0   4.0

overwrite=False保留

In [91]: df1 = pd.DataFrame({'A': [0, 0], 'B': [4, 4]})In [92]: df2 = pd.DataFrame({'B': [3, 3], 'C': [-10, 1], }, index=[1, 2])In [93]: df1Out[93]:    A  B0  0  41  0  4In [94]: df2Out[94]:    B   C1  3 -102  3   1In [95]: df1.combine(df2, take_smaller)Out[95]:     A    B     C0 NaN  NaN   NaN1 NaN  3.0 -10.02 NaN  3.0   1.0# 保留A列原有的值In [96]: df1.combine(df2, take_smaller, overwrite=False)Out[96]:      A    B     C0  0.0  NaN   NaN1  0.0  3.0 -10.02  NaN  3.0   1.0

另外一个combine_first

df.combine_first(other: 'DataFrame') -> 'DataFrame'

当df中元素为空采用other里的进行替换,结果为并集合并

In [97]: df1 = pd.DataFrame({'A': [None, 0], 'B': [None, 4]})In [98]: df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})In [99]: df1Out[99]:      A    B0  NaN  NaN1  0.0  4.0In [100]: df2Out[100]:    A  B0  1  31  1  3In [101]: df1.combine_first(df2)Out[101]:      A    B0  1.0  3.01  0.0  4.0In [102]: df1 = pd.DataFrame({'A': [None, 0], 'B': [4, None]})In [103]: df2 = pd.DataFrame({'B': [3, 3], 'C': [1, 1]}, index=[1, 2])In [104]: df1Out[104]:      A    B0  NaN  4.01  0.0  NaNIn [105]: df2Out[105]:    B  C1  3  12  3  1In [106]: df1.combine_first(df2)Out[106]:      A    B    C0  NaN  4.0  NaN1  0.0  3.0  1.02  NaN  3.0  1.0

关于"pandas中如何使用combine和combine_first函数"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0