熊猫数据框保持满足某些条件的行,否则保持所有可用

时间:2020-06-11 08:11:54

标签: python pandas dataframe filter

我有以下称为df1的数据框:

    name    shortname location   type
0   TexasA  TXA       Canada     Main
1   TexasA  TXA       US         Main
2   TexasA  TXA ZZ    US         Sub-par
3   TexasA  TXA ZZ 2  US         Sub-par2
4   Oregon  ORGN      US         Main
5   Ontario ONT2      Canada     Sub-par
...........

然后我有一个称为df2的以下数据框:

    name    country
0   TexasA  US
1   Oregon  US
2   Ontario Canada
...........

我希望合并名称上的数据框,最后的数据框应保留以下数据框:

    name    shortname
0   TexasA  TXA
1   Oregon  ORGN
2   Ontario ONT2
...........

现在,当我使用以下命令进行合并时,

finaldf = pd.merge(df2,df1,on=['name','shortname'],how='out')

,我剩下以下内容:

    name    shortname location   type
1   TexasA  TXA       US         Main
2   TexasA  TXA ZZ    US         Sub-par
3   TexasA  TXA ZZ 2  US         Sub-par2
4   Oregon  ORGN      US         Main
6   Ontario ONT2      Canada     Sub-par

我只想保留类型为Main的那些,如果不可用,我想保留所有可用的类型,该类型可以低于标准价,但也可以是其他,我该怎么做?

1 个答案:

答案 0 :(得分:0)

IIUC,您想要从shortname的{​​{1}}和df2 / df1和{ {1}}“主要”。如果name中没有这样的条目,则其他任何类型都相同。您可以进行两次合并,然后使用combine_first用第二个结果中的相应值填充第一个结果中的缺失值:

contry

结果:

location