如何解决使用 sklearn 标准化 Pandas 数据框中的一组列
我有一个包含四列的表格:CustomerID、Recency、Frequency 和 Revenue。
我需要对 Recency、Frequency 和 Revenue 列进行标准化(缩放)并保存 CustomerID 列。
我使用了这个代码:
from sklearn.preprocessing import normalize,StandardScaler
df.set_index('CustomerID',inplace = True)
standard_scaler = StandardScaler()
df = standard_scaler.fit_transform(df)
df = pd.DataFrame(data = df,columns = ['Recency','Frequency','Revenue'])
但结果是一个没有列 CustomerID 的表。有什么办法可以得到一个带有相应 CustomerID 和缩放列的表吗?
解决方法
fit_transform
returns an ndarray 没有索引,因此您将丢失在 df.set_index('CustomerID',inplace = True)
上设置的索引。
您可以简单地获取需要转换的列子集,将它们传递给 StandardScaler
,然后覆盖原始列,而不是这样做。
# Subset of columns to transform
cols = ['Recency','Frequency','Revenue']
# Overwrite old columns with transformed columns
df[cols] = StandardScaler.fit_transform(df[cols])
这样,您就可以完全保持 CustomerID
不变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。