2012-12-18 16 views
11

私はpandasデータフレームの初心者です。各要素x、x/maxを計算するように各列に関数を適用したいと考えました。PandasデータフレームにApply関数を適用

この質問を参照しましたが、各列の最大値にアクセスするのに問題があります。事前のおかげで Pandas DataFrame: apply function to all columns

入力:

 A B C D 
    0 8 3 5 8 
    1 9 4 0 4 
    2 5 4 3 8 
    3 4 8 5 1 

出力:

このような
 A  B  C D 
    0 8/9 3/8 5/5 8/8 
    1 9/9 4/8 0/5 4/8 
    2 5/9 4/8 3/5 8/8 
    3 4/9 8/8 5/5 1/8 
+0

"0.888 .."で十分ですか、または本当に分数 '8/9'が必要ですか? – DSM

+0

ああ、0.888は素晴らしいでしょう。その操作を示すことを意図していました。混乱させて申し訳ありません。 – msunbot

答えて

13

何かが動作するはずです:私はそれように1.0dfを掛け

>>> from pandas import DataFrame 
>>> 
>>> df = DataFrame({"A": [8,9,5,4], "B": [3,4,4,8], "C": [5,0,3,5], "D": [8,4,8,1]}) 
>>> df.max() 
A 9 
B 8 
C 5 
D 8 
>>> (df * 1.0)/df.max() 
      A  B C  D 
0 0.888889 0.375 1.0 1.000 
1 1.000000 0.500 0.0 0.500 
2 0.555556 0.500 0.6 1.000 
3 0.444444 1.000 1.0 0.125 

注意構成されていないint s(整数の除算と結果のDataFrameが0と1でいっぱいになるのを避けるために、.astype(float)も機能します)。

関連する問題