gpt4 book ai didi

python - 从 Pandas Python 数据帧重新缩放到 (0,1) 某些列

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:05 27 4
gpt4 key购买 nike

我有以下类型的数据框:

  Channel   Region  Fresh   Milk    Grocery Frozen  Detergents_Paper    Delicassen
0 2 3 12669 9656 7561 214 2674 1338
1 2 3 7057 9810 9568 1762 3293 1776
2 2 3 6353 8808 7684 2405 3516 7844
3 1 3 13265 1196 4221 6404 507 1788
4 2 3 22615 5410 7198 3915 1777 5185

我想做两件事:

1) 能够仅重新缩放某些列而不是所有列,以便它们在 0,1 之间。我只想选择某些列,但不是按名称而是按位置。想象一下,我想改变 200 并且不想写所有这些。

我试过的代码是:

df /= df.max() 

但它使所有列都在 (0,1) 之间,而不仅仅是我想要的列。而且我找不到只选择其中一部分的方法。

2) 我还想重新缩放列,但不是在它们之间,我的意思是我想只为牛奶制作一个秤,另一个只为冷冻的,例如。

我想重新缩放每一个,例如在 100 之间划分,因为它们太大了,但也许对于另一列我想在 10 之间划分它,因为 100 太多了。我该怎么做?

最佳答案

对于 1,您可以选择这样的列列表:

df[['Milk','Frozen','Grocery']]

因此,要仅重新缩放这三列,请使用:

df[['Milk','Frozen','Grocery']] -= df[['Milk','Frozen','Grocery']].min()
df[['Milk','Frozen','Grocery']] /= df[['Milk','Frozen','Grocery']].max()

如果这是您的第二个问题的意思,则此方法已经相互独立地缩放您的列。

编辑:

如果您想选择数据框的前 200 列,您可以使用 df.columns,它会为您提供列列表:

df[df.columns[:200]] -= df[df.columns[:200]].min()
df[df.columns[:200]] /= df[df.columns[:200]].max()

dataframe 上 pandas 的 max 方法返回每列最大值的列表。因此,如果您使用上述代码,每列中的最大值都将完全等于 1。

如果您不想将它除以每列的最大值,而是第一列除以 n1,第二列除以 n2,您可以使用相同的表示法:

df[df.columns[:4]] /= [n1,n2,n3,n4]

关于python - 从 Pandas Python 数据帧重新缩放到 (0,1) 某些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com