Ant*_*uiz 3 python scaling dataframe pandas
我有以下类型的数据帧:
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
Run Code Online (Sandbox Code Playgroud)
我想做两件事:
1)能够仅重新调整某些列而不是所有列,以使它们在0,1之间.我想只选择某些列,但不是通过他们的名字,而是选择他们的位置.想象一下,我想要改变200并且不想写所有这些.
我试过的代码是:
df /= df.max()
Run Code Online (Sandbox Code Playgroud)
但它使所有列都在(0,1)之间而不仅仅是我想要的列.我找不到只选择其中一部分的方法.
2)我还想重新调整列,但不是它们之间,我的意思是我想只为牛奶制作一个刻度,另一个仅用于冷冻,例如.
我想重新调整每一个,例如在100之间划分,因为它们太大了,但是对于另一个列,我想将它除以10之间因为100太多了.我该怎么办?
对于1,您可以选择如下列列表:
df[['Milk','Frozen','Grocery']]
Run Code Online (Sandbox Code Playgroud)
因此,要仅重新缩放这三列,请使用:
df[['Milk','Frozen','Grocery']] /= df[['Milk','Frozen','Grocery']].max()
Run Code Online (Sandbox Code Playgroud)
如果这是您的第二个问题的意思,此方法已经使您的列彼此独立地扩展.
编辑:
如果要选择数据框的200个第一列,可以使用df.columns它们为您提供列的列表:
df[df.columns[:200]] /= df[df.columns[:200]].max()
Run Code Online (Sandbox Code Playgroud)
max数据帧上的pandas上的方法返回每列最大值的列表.因此,如果使用上面的代码,则每个列中的最大值将完全等于1.
如果您不想将它除以每列的最大值,而是将第一列除以n1第二列,则n2可以使用相同的表示法:
df[df.columns[:4]] /= [n1,n2,n3,n4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2516 次 |
| 最近记录: |