繁体   English   中英

将值的 StandardScaler() 作为新列添加到 DataFrame 会返回部分 NaN

[英]Adding StandardScaler() of values as new column to DataFrame returns partly NaNs

我有一个熊猫数据帧:

df['total_price'].describe()

返回

count    24895.000000
mean       216.377369
std        161.246931
min          0.000000
25%        109.900000
50%        174.000000
75%        273.000000
max       1355.900000
Name: total_price, dtype: float64

当我对其应用preprocessing.StandardScaler()时:

x = df[['total_price']]
standard_scaler = preprocessing.StandardScaler()
x_scaled = standard_scaler.fit_transform(x)
df['new_col'] = pd.DataFrame(x_scaled)   

<y 具有标准化值的新列包含一些NaN

df[['total_price', 'new_col']].head()

    total_price new_col
0   241.95      0.158596
1   241.95      0.158596
2   241.95      0.158596
3   81.95      -0.833691
4   81.95      -0.833691

df[['total_price', 'new_col']].tail()

        total_price new_col
28167   264.0       NaN
28168   264.0       NaN
28176   94.0        NaN
28177   166.0       NaN
28178   166.0       NaN

这里出了什么问题?

数据框中的索引存在差距:

28167 
28168  
28176  
28177  
28178

当您调用pd.DataFrame(x_scaled)您正在创建一个新的连续索引,因此在将其作为原始数据帧中的一列进行分配时,许多行将不匹配。 您可以通过重置原始数据帧中的索引 ( df.reset_index() ) 或通过就地更新x ( x.update(x_scaled) ) 来解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM