我有以下两个 Dataframe df1和df2
type num1 dem
t1 m1 32
t1 m2 33
t2 p1 34
t2 p2 35
and
type num1 num2
t1 - 23
t1 - 24
t2 n1 25
t2 n2 26
我想根据两种不同的规则合并这两个数据框。在df2
中,如果df2['num1']
为空,则我将仅根据类型进行合并操作。如果df2['num1']
为非空,则我将连接两个数据框的type
和num1
列,然后根据此新列进行合并操作。
最初我的想法是为两个 Dataframe 创建一个额外的列,名为flag
,然后将这两个 Dataframe 分开,分别执行操作。最后,将执行pd.concat
来连接这两个 Dataframe 。
我做到了,
df3 = pd.merge(df1, df2[d2['num1'].isna()], on = 'type', how = 'left')
但它没有给我正确的答案。我想我错过了一些东西。
好心帮忙。
2条答案
按热度按时间7rtdyuoh1#
如果我明白你的规矩,你就应该这么做
其返回
9jyewag02#
我认为您的
concat
想法是正确的。使用掩码将df2
拆分为两部分,并分别处理这两种情况:输出(使用略有不同的
df1
作为输入):使用的输入: