我想将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发布于 2019-10-24 08:52:20
将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发布于 2019-10-24 08:59:15
你能试一下吗。
df['Year']=df['A'].combine_first(df['B'])
df输出如下。
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要在新的数据框架中只获取Name和year列,请尝试如下。
df['Year']=df['A'].combine_first(df['B'])
df1=df[['Name','Year']]
df1发布于 2019-10-24 08:55:10
df = df.fillna(0)
df["Year"] = df["A"] + df["B"]
df = df[['Name','Year']]https://stackoverflow.com/questions/58537651
复制相似问题