python对数据进行合并的函数_python – 解决Pandas数据框与函数的合并冲突?

假设我有两个数据帧,我想合并,但是因为行和列重叠而存在冲突.我想传递一个函数来解决冲突,而不是复制行.可以这样做吗?

import numpy as np

import pandas as pd

dates1 = pd.date_range("2014-01-01", periods = 4)

dates2 = pd.date_range("2014-01-03", periods = 4)

cols1 = list("ABCD")

cols2 = list("CDEF")

df1 = pd.DataFrame(np.ones([4, 4], dtype = "bool"), index = dates1, columns = cols1)

df2 = pd.DataFrame(np.zeros([4, 4], dtype = "bool"), index = dates2, columns = cols2)

In [317]: df1

Out[317]:

A B C D

2014-01-01 True True True True

2014-01-02 True True True True

2014-01-03 True True True True

2014-01-04 True True True True

In [318]: df2

Out[318]:

C D E F

2014-01-03 False False False False

2014-01-04 False False False False

2014-01-05 False False False False

2014-01-06 False False False False

如您所见,两个数据框在C列和D列以及2014-01-03和2014-01-04行中重叠.所以现在当我合并它们时,由于这种冲突,我得到重复的行:

In [321]: pd.concat([df1, df2])

Out[321]:

A B C D E F

2014-01-01 True True True True NaN NaN

2014-01-02 True True True True NaN NaN

2014-01-03 True True True True NaN NaN

2014-01-04 True True True True NaN NaN

2014-01-03 NaN NaN False False False False

2014-01-04 NaN NaN False False False False

2014-01-05 NaN NaN False False False False

2014-01-06 NaN NaN False False False False

当我真正想要的是真值来覆盖Falses(或NaN),我可以做,例如,传递“or”函数来解决这种重复冲突.这可以在熊猫中完成吗?

结果应如下所示:

A B C D E F

2014-01-01 True True True True NaN NaN

2014-01-02 True True True True NaN NaN

2014-01-03 True True True True False False

2014-01-04 True True True True False False

2014-01-05 NaN NaN False False False False

2014-01-06 NaN NaN False False False False

也就是说,在没有重复的情况下,两个数据帧中的值通过,在任一帧中没有数据的情况下,返回NaN,但是在两个帧中都有数据的情况下,True覆盖False(即,“要么”).

我正在寻找一种通用的解决方案,用于合并Pandas DataFrames之间的冲突,最好是通过传递函数.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值