繁体   English   中英

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

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

提示:本站收集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

这里出了什么问题?

1 个回复

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

28167 
28168  
28176  
28177  
28178

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

1 将新列添加到pandas DataFrame时的NaN值

我正在尝试在pandas DataFrame中生成一个新列,该列等于另一个pandas DataFrame中的值。 当我尝试创建新列时,我只获取新列值的NaN。 首先我使用API​​调用来获取一些数据,'mydata'DataFrame是按日期索引的一列数据 我使用以下代码从CS ...

2 添加到列而不创建 NaN 值

我有一个有 6 行的主 DataFrame。 我想将来自其他几个 DataFrame 的值添加到 pl 列,但其他 DataFrame 将具有行的子集。 我不想在缺失的行中创建 NaN 值。 这是主数据框: 这是我想添加到 Master 的 DateFrame 这是我的代码: 这是(不需 ...

3 将列和值添加到 CSV 或 Dataframe

全新的 Python 和编程。 我有一个从 .csv 文件中提取文件创建日期的函数(日期包含在文件命名约定中): 这些文件中的数据被引入到一个 DataFrame 中: 由于使用 file_list 中的每个文件,我需要将其对应的日期插入到新列 (trade_date) 中。 如此处所写, ...

8 添加到 Dataframe 的新列不断消失

我需要清理我的数据,在那里我删除了有缺陷的行。 为此,我创建了一个 Day_number 列来保存要在过滤中使用的天数。 这导致 df_filtered_nan 的以下数据帧: 但是,当我执行过滤步骤时,由于某种原因,Day_number 列消失了,并且出现属性错误。 现在,当我打印 d ...

10 根据谓词将值添加到新列

假设我有一个由一群人和公司组成的数据框,他们隶属于: 现在,我想添加一个新的公司类型的列,它们属于: 我将如何浏览数据框,过滤company列并将值提取到新列中? 像这样: ...

暂无
暂无

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

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