文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

pandas中如何使用combine和combine_first函数

2023-06-03 07:51

关注

这篇文章将为大家详细讲解有关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函数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯