首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将2列合并为1列

将2列合并为1列
EN

Stack Overflow用户
提问于 2019-10-24 08:50:40
回答 4查看 105关注 0票数 2

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

我有这样的数据:

代码语言:javascript
运行
复制
     Name       A       B   
    Pikachu   2007    nan
    Pikachu   nan     2008
    Raichu    2007    nan
    Mew       nan     2018

预期结果:

代码语言:javascript
运行
复制
     Name     Year   
    Pikachu   2007   
    Pikachu   2008   
    Raichu    2007   
    Mew       2008 

我试过的代码:

代码语言:javascript
运行
复制
df['Year']= df['A','B'].astype(str).apply(''.join,1)

但我的结果是:

代码语言:javascript
运行
复制
 Name     Year   
Pikachu   2007nan   
Pikachu   nan2008   
Raichu    2007nan   
Mew       nan2008
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-24 08:52:20

Series.fillnaDataFrame.pop一起用于提取列并最后转换为整数:

代码语言:javascript
运行
复制
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
票数 4
EN

Stack Overflow用户

发布于 2019-10-24 08:59:15

你能试一下吗。

代码语言:javascript
运行
复制
df['Year']=df['A'].combine_first(df['B'])
df

输出如下。

代码语言:javascript
运行
复制
     Name    A       B      Year
0   Pikachu 2007.0  NaN     2007.0
1   Pikachu NaN     2008.0  2008.0
2   Raichu  2007.0  NaN     2007.0
3   Mew     NaN     2018.0  2018.0

要在新的数据框架中只获取Nameyear列,请尝试如下。

代码语言:javascript
运行
复制
df['Year']=df['A'].combine_first(df['B'])
df1=df[['Name','Year']]
df1
票数 2
EN

Stack Overflow用户

发布于 2019-10-24 08:55:10

代码语言:javascript
运行
复制
df = df.fillna(0)
df["Year"] = df["A"] + df["B"]
df = df[['Name','Year']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58537651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档