2013-06-25 51 views
4

我想知道如何將DataFrame中的元素除以其最大行數。見下面的代碼:將熊貓數據框元素除以它的行max

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中的元素將基於相同的線是dividedby dfMax。有人有想法嗎?

回答

4

我敢肯定,你可以只使用df.divide()

如果df是

    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 
+0

很多,一個沒有問題,萬一元素是整數,如何將它們轉換爲浮動,嘗試astype,但不起作用 – perigee

+0

沒關係,由dfMax * 1.0解決,不漂亮,但作品 – perigee

+0

仍然有一個問題,我怎麼能處理dfMax包含零的情況。由於dfDiv = df.divide()中的數據將預先包含無窮大... thx – perigee

相關問題