我想将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
答案 0 :(得分:3)
将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
答案 1 :(得分:1)
df = df.fillna(0)
df["Year"] = df["A"] + df["B"]
df = df[['Name','Year']]
答案 2 :(得分:1)
请您尝试以下。
pickle_in = open('test_pickle','rb')
net = pickle.load(pickle_in)
all_params = net['params']
print(net['network'])
print(all_params)
network = lasagne.layers.set_all_param_values(net['network'], all_params)
print(network)
输出如下。
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
答案 3 :(得分:0)
numpy.where可能有用
df["A"] = np.where(df["A"].isna(), df["B"], df["A"]).astype("int")
df = df.drop("B", axis=1)
print(df)
Name Year
0 Pikachu 2007
1 Pikachu 2008
2 Raichu 2007
3 Mew 2018