假设我有这个:
>>> x = pandas.DataFrame([[1.0, 2.0, 3.0], [3, 4, 5]], columns=["A", "B", "C"])
>>> print x
A B C
0 1 2 3
1 3 4 5
Run Code Online (Sandbox Code Playgroud)
现在我想x
按行进行标准化- 也就是说,将每一行除以其总和.如本问题所述,这可以通过实现x = x.div(x.sum(axis=1), axis=0)
.但是,这会创建一个新的 DataFrame.如果我的DataFrame很大,那么即使我立即将它分配给原始名称,也可以在创建这个新的DataFrame时消耗大量内存.
有没有一种有效的方法来执行此操作?我希望像x.idiv()
这样的东西可以axis
选择div
但是更新x
到位.对于这个特定的情况,我需要划分,但有时为所有基本操作提供类似的就地版本也是很好的.
(我可以通过逐行迭代并将每个规范化的行分配回原始行来更新它,但这很慢,我正在寻找更有效的解决方案.)
And*_*den 12
您可以直接在numpy中执行此操作(无需创建副本):
In [11]: x1 = x.values.T
In [12]: x1
Out[12]:
array([[ 1., 3.],
[ 2., 4.],
[ 3., 5.]])
In [13]: x1 /= x1.sum(0)
In [14]: x
Out[14]:
A B C
0 0.166667 0.333333 0.500000
1 0.250000 0.333333 0.416667
Run Code Online (Sandbox Code Playgroud)
也许应该有一个div的内部标志......?
归档时间: |
|
查看次数: |
2371 次 |
最近记录: |