【问题标题】:Merge 2 data frames based on 2 condition in pandas根据 pandas 中的 2 个条件合并 2 个数据帧
【发布时间】:2019-08-10 02:57:15
【问题描述】:

如何将 NaN 值替换为第一个 df 中的值:

    country   sex    year      cancer
0   Albania  female  2000       32
1   Albania  male    2000       58
2   Antigua  female  2000       2
3   Antigua  male    2000       5
4   Argen    female  2000       591
5   Argen    male    2000       2061

在第二个df中:

    country year    sex    cancer
0   Albania 1985    female  NaN
1   Albania 1985    male    NaN
2   Albania 1986    female  NaN
3   Albania 1986    male    NaN
4   Albania 1987    female  25.0
5   Antigua 1992    male    NaN
6   Antigua 1985    female  NaN  

最终应该是这样的:

country year    sex     cancer 
    0   Albania 1985    female  32
    1   Albania 1985    male    58
    2   Albania 1986    female  32
    3   Albania 1986    male    58
    4   Albania 1987    female  25
    5   Antigua 1992    male    5
    6   Antigua 1985    female  2 

重要的是两个条件国家和性别

【问题讨论】:

  • 你可以试试merging
  • Pandas Merging 101的可能重复
  • 我想这里的困难是只替换NaN 值。
  • 你试过combine_first吗?不确定它在您的情况下效果如何......
  • 只需使用merge 和np.where

标签: python pandas dataframe merge nan


【解决方案1】:

我最终使用fillna

df2.set_index(['country','sex'],inplace=True)
df2['cancer']=df2['cancer'].fillna(df1.set_index(['country','sex']).cancer)
df2.reset_index(inplace=True)
df2
Out[745]: 
   country     sex  year  cancer
0  Albania  female  1985    32.0
1  Albania    male  1985    58.0
2  Albania  female  1986    32.0
3  Albania    male  1986    58.0
4  Albania  female  1987    25.0
5  Antigua    male  1992     5.0
6  Antigua  female  1985     2.0

【讨论】:

  • 我收到错误:无法处理非唯一多索引!
  • @Sinchetru 为示例工作,请确保 df1 中没有重复行
猜你喜欢
  • 2017-12-30
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2021-01-28
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
相关资源
最近更新 更多