【问题标题】:change rows in pandas更改熊猫中的行
【发布时间】:2017-03-08 15:27:43
【问题描述】:

我在熊猫数据框中有一个矩阵

print dfMatrix
       0       1      2      3       4
0  10000      10      8     11      10
1     10  100000     13      9      10
2      8      13  10000      9      11
3     11       9      9  10000      12
4     10      10     11     12  100000

我需要通过从该行(逐行)减少每个行的最小值来更改行值 这是我尝试的代码:

def matrixReduction(matrix):
    minRowValues = matrix.min(axis=1)
    for i in xrange(matrix.shape[1]):
        matrix[i][:] = matrix[i][:] - minRowValues[i]
    return matrix

并期望输出如下:

      0     1     2     3     4
 0 9992     2     0     3     2
 1    1 99991     4     0     1
 2    0     5  9992     1     3
 3    2     0     0  9991     3
 4    0     0     1     2 99990

但我得到这样的输出:

      0      1     2     3      4
0  9992      1     0     2      0
1     2  99991     5     0      0
2     0      4  9992     0      1
3     3      0     1  9991      2
4     2      1     3     3  99990

因此它会更改列而不是行中的值, 我如何为行实现它? 谢谢

【问题讨论】:

    标签: python pandas matrix dataframe min


    【解决方案1】:

    您可以将每行的最小值减去submin

    print (df.min(axis=1))
    0     8
    1     9
    2     8
    3     9
    4    10
    dtype: int64
    
    print (df.sub(df.min(axis=1), axis=0))
          0      1     2     3      4
    0  9992      2     0     3      2
    1     1  99991     4     0      1
    2     0      5  9992     1      3
    3     2      0     0  9991      3
    4     0      0     1     2  99990
    

    我也尝试重写你的函数 - 我添加 ix 用于选择:

    def matrixReduction(matrix):
        minRowValues = matrix.min(axis=1)
        for i in range(matrix.shape[1]):
            matrix.ix[i,:] = matrix.ix[i, :] - minRowValues[i]
        return matrix
    

    时间安排

    In [136]: %timeit (matrixReduction(df))
    100 loops, best of 3: 2.64 ms per loop
    
    In [137]: %timeit (df.sub(df.min(axis=1), axis=0))
    The slowest run took 5.49 times longer than the fastest. This could mean that an intermediate result is being cached.
    1000 loops, best of 3: 308 µs per loop
    

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 2013-03-31
      相关资源
      最近更新 更多