微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Pandas Python数据帧重新调整为(0,1)某些列

我有以下类型的数据帧:

  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']].max()

如果这是您的第二个问题的意思,此方法已经使您的列彼此独立地扩展.

编辑:

如果要选择数据框的200个第一列,可以使用df.columns,它为您提供列的列表:

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

数据帧上pandas上的max方法返回每列最大值的列表.因此,如果使用上面的代码,则每个列中的最大值将完全等于1.

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐