разделяне на елементите на рамката от данни на pandas на макс

Чудя се как да разделя елементите в DataFrame на макс. Вижте следния код:

index = pd.date_range('1/1/2000', periods=8)
df = DataFrame(np.random.randn(8, 3), index=index, columns=['A', 'B', 'C'])
dfMax = df.max(axis=1)

и след това елементите в df ще бъдат разделени на dfMax въз основа на същия ред. Някой има ли идея?


person perigee    schedule 25.06.2013    source източник


Отговори (1)


Почти съм сигурен, че можете просто да използвате df.divide()

If df is

                   A         B         C
2000-01-01 -1.420930 -0.836832  0.941576
2000-01-02 -1.011576  0.297129  0.768809
2000-01-03  0.482838  0.331886  1.573922
2000-01-04 -1.359400 -0.909661  1.144215
2000-01-05  0.142007 -1.600080  2.160389
2000-01-06 -0.782341  0.452034  0.242853
2000-01-07  0.414489 -1.319712 -0.129439
2000-01-08 -0.817271 -1.073293  1.689901

и dfMax е:

2000-01-01    0.941576
2000-01-02    0.768809
2000-01-03    1.573922
2000-01-04    1.144215
2000-01-05    2.160389
2000-01-06    0.452034
2000-01-07    0.414489
2000-01-08    1.689901

Тогава df.divide(dfMax, axis=0) ви дава:

                   A         B         C
2000-01-01 -1.509098 -0.888757  1.000000
2000-01-02 -1.315771  0.386480  1.000000
2000-01-03  0.306774  0.210866  1.000000
2000-01-04 -1.188064 -0.795009  1.000000
2000-01-05  0.065732 -0.740644  1.000000
2000-01-06 -1.730712  1.000000  0.537245
2000-01-07  1.000000 -3.183953 -0.312285
2000-01-08 -0.483621 -0.635122  1.000000
person Matti John    schedule 25.06.2013
comment

Имам формуляр за преглед (списък с всички номера и заглавия), който има поле за търсене, което отваря друг формуляр с подробна информация за проблем. Всеки брой има специален номер, така че да може да бъде идентифициран с този номер.

Сега искам да използвам тази функция за търсене, за да стигна директно до подробната информация (във формуляра с подробна информация се показва само един проблем).

Няма проблем с отварянето на формата, но командата findfirst не работи. Така че не показва правилния проблем.

Private Sub cmdQMOSearch_Click()
' Search function - checks Nmb and Alternative Nmb

Dim SearchNmb As Long

If Len(Nz(Me.txtQMOSearch)) <> 0 Then
    SearchNmb = Me.txtQMOSearch

    If DCount("*", "tblNumber", "[Nmb] = " & SearchNmb & " OR [Nmb Alternative] = " & SearchNmb) <> 0 Then
        DoCmd.OpenForm "Nmb Adding Form", acViewNormal
        With Me.Recordset
            .Source = "SELECT * FROM tblNumber"
            .FindFirst ("[Nmb] =" & SearchNmb & " OR [Nmb Alternative] = " & SearchNmb)
        End With
        Else
            MsgBox ("There is no issue with this # yet.")
    End If

End If

End Sub

Благодаря

- person perigee; 25.06.2013
comment
Все още имам един въпрос, как мога да се справя със случая, че dfMax съдържа нули. Тъй като данните в dfDiv = df.divide() ще съдържат безкрайност...thx предварително - person perigee; 25.06.2013
comment
няма значение отново :-D, решено от: dfDiv[np.isinf(dfDiv)] = np.nan - person perigee; 25.06.2013