DataFrame包含两列特征,转换成Index不变,将其中一列value作为columns,对应的另一列作为values

DataFrame包含两列特征,转换成Index不变,将其中一列value作为columns,对应的另一列作为values


我们的原始数据是:

DataFrame包含两列特征,转换成Index不变,将其中一列value作为columns,对应的另一列作为values_第1张图片

很明显这是一个有两列数据的DataFrame。而这时我其实想得到一新的DataFrame,把’wifi_name’作为columns,index保持不变,而对应的‘strength’作为values,如果原始DataFrame的一个index对应的某些wifi_name不存在,则新的DataFrame会自动给这个位置设为Nan。

下面这个其实就是我们想要的新的DataFrame结构,可以看到原始DataFrame里面每个index不变,对应的wifi_name作为了新的column。如果对应记录在原始DataFrame里面没有,则会设为Nan

DataFrame包含两列特征,转换成Index不变,将其中一列value作为columns,对应的另一列作为values_第2张图片

具体处理过程如下:

final_wifi = final_wifi.set_index('wifi_name',append=True) # 先将wifi_name变成索引

# 这里把前面的两个index的DataFrame变成Series
final_wifi = pd.Series(final_wifi.values.reshape(len(final_wifi)),index=final_wifi.index) 

# 然后把所有不同的wifi_name变成column,由于有些是nan,所以可能会多出一列column=np.nan
final_wifi = final_wifi.unstack() 

if np.nan in final_wifi_mall.columns:
        final_wifi = final_wifi.drop(np.nan, axis=1) # 去掉空列

这样就可以完成我们想要的转换。

你可能感兴趣的:(机器学习工程实践)