Skip to main content
 首页 » 编程设计

python之将 2 列合并为 1 列

2025年05月04日18shanyou

我想将 2 列合并为 1 列并删除 nan。

我有这个数据:

     Name       A       B    
    Pikachu   2007    nan 
    Pikachu   nan     2008 
    Raichu    2007    nan 
    Mew       nan     2018 

预期结果:

     Name     Year    
    Pikachu   2007    
    Pikachu   2008    
    Raichu    2007    
    Mew       2008  

我试过的代码:

df['Year']= df['A','B'].astype(str).apply(''.join,1) 

但我的结果是这样的:

 Name     Year    
Pikachu   2007nan    
Pikachu   nan2008    
Raichu    2007nan    
Mew       nan2008 

请您参考如下方法:

使用Series.fillna与 DataFrame.pop用于提取列并最后转换为整数:

df['Year']= df.pop('A').fillna(df.pop('B')).astype(int) 
 
#if possible some missing values in Year column 
#df['Year']= df.pop('A').fillna(df.pop('B')).astype('Int64') 
print (df) 
      Name  Year 
0  Pikachu  2007 
1  Pikachu  2008 
2   Raichu  2007 
3      Mew  2018