我正在尝试在pandas DataFrame中生成一个新列,该列等于另一个pandas DataFrame中的值。 当我尝试创建新列时,我只获取新列值的NaN。 首先我使用API调用来获取一些数据,'mydata'DataFrame是按日期索引的一列数据 我使用以下代码从CS ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有一个熊猫数据帧:
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.