我想在pandas中合并两个数据帧,但我得到的是Nan值。
data_orig = url
data_orig.head(3) #data frame 1
sex length diameter height
0 M 0.455 0.365 0.095
1 M 0.350 0.265 0.090
2 F 0.530 0.420 0.135
def parse_label(label):
options = {'I': 0, 'F': 1, 'M': 2}
return options[label]
data = pd.DataFrame()
data['sex'] = data_orig['sex'].map(parse_label)
data.head() #data frame 2
sex
0 2
1 2
2 1
3 2
pd.merge(data, data_orig, on ='sex', how= 'left')
sex length diameter height
2 NaN NaN NaN
2 NaN NaN NaN
为什么我在合并的数据框中得到NaN值?
我需要这样的数据框,我该怎么办?
sex length diameter height
2 0.455 0.365 0.095
2 0.350 0.265 0.090
答案 0 :(得分:1)
您获得了NaN
个值,因为左侧df中的值与右侧df没有匹配:
In [3]:
data
Out[3]:
sex
0 2
1 2
2 1
In [4]:
df
Out[4]:
sex length diameter height
0 M 0.455 0.365 0.095
1 M 0.350 0.265 0.090
2 F 0.530 0.420 0.135
M' M'使用相应的int值2。 它不清楚你在这里要做什么,你执行了你的性别角色值转换为相应的int值,然后你尝试合并它,为什么不在orig df中转换它们:
In [6]:
df['sex'] = df['sex'].map(parse_label)
df
Out[6]:
sex length diameter height
0 2 0.455 0.365 0.095
1 2 0.350 0.265 0.090
2 1 0.530 0.420 0.135