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]: df1
Out[81]:
A B
0 0 4
1 0 4
In [82]: df2
Out[82]:
A B
0 1 3
1 1 3
In [83]: take_smaller = lambda s1, s2: s1 if s1.sum() < s2.sum() else s2
In [84]: df1.combine(df2, take_smaller)
Out[84]:
A B
0 0 3
1 0 3
# 也可以调用numpy的函数
In [85]: import numpy as np
In [86]: df1.combine(df2, np.minimum)
Out[86]:
A B
0 0 3
1 0 3fill_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]: df1
Out[88]:
A B
0 0 NaN
1 0 4.0
In [89]: df2
Out[89]:
A B
0 1 3
1 1 3
In [90]: df1.combine(df2, take_smaller, fill_value=-88)
Out[90]:
A B
0 0 -88.0
1 0 4.0overwrite=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]: df1
Out[93]:
A B
0 0 4
1 0 4
In [94]: df2
Out[94]:
B C
1 3 -10
2 3 1
In [95]: df1.combine(df2, take_smaller)
Out[95]:
A B C
0 NaN NaN NaN
1 NaN 3.0 -10.0
2 NaN 3.0 1.0
# 保留A列原有的值
In [96]: df1.combine(df2, take_smaller, overwrite=False)
Out[96]:
A B C
0 0.0 NaN NaN
1 0.0 3.0 -10.0
2 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]: df1
Out[99]:
A B
0 NaN NaN
1 0.0 4.0
In [100]: df2
Out[100]:
A B
0 1 3
1 1 3
In [101]: df1.combine_first(df2)
Out[101]:
A B
0 1.0 3.0
1 0.0 4.0
In [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]: df1
Out[104]:
A B
0 NaN 4.0
1 0.0 NaN
In [105]: df2
Out[105]:
B C
1 3 1
2 3 1
In [106]: df1.combine_first(df2)
Out[106]:
A B C
0 NaN 4.0 NaN
1 0.0 3.0 1.0
2 NaN 3.0 1.0关于“pandas中如何使用combine和combine_first函数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
当前标题:pandas中如何使用combine和combine_first函数-创新互联
文章来源:http://www.jxjierui.cn/article/doeche.html


咨询
建站咨询
