2017-08-25 11 views
1

私はと呼ばれるデータフレームを505個のストックから構成し、各列の合計週52行の割合を変更しました。私は最後の週次の行の最大値で株式を見つけたいと思ったので、私がやった :データフレームのPythonで最大のソート値が機能しない

import pandas as pd 

st1 = pd.DataFrame({"FIN_MAX": stock1.tail(1).max().sort_values(ascending=False)}) 

上記のコードは、もともと働いていたが、今ではエラーがスローされます。私はsort_values(ascending=False)を落としたが、その後値が高いものから順に順番に配置されていない場合

TypeError: '>' not supported between instances of 'float' and 'str' 

私が得ることができる最も近いです。

st1 = pd.DataFrame({"FIN_MAX":stock1.tail(1).max()}) 

また、上記と同じエラーが発生する次のコードも試しました。

st1.sort_values(["FIN_MAX"], ascending=False) 

私はJupyterノートブックでPython 3.6.1を使用しています。 ヘルプや代替案は大変ありがとうございます。

個々のcsvファイルからすべてのストックを連結したときに、Unnamed: 0という名前の列が作成されたためにエラーが発生したようです。 私がdel stock1["Unnamed: 0"]をやった後、それは問題を解決したようです。

答えて

1

IIUC:

n株式を取得するには、最大値と値

stock1.iloc[-1].nlargest(1) 

で株式を取得するには、最大値

stock1.iloc[-1].idxmax() 

で株式を取得するには最大値とその値

n = 5 
stock1.iloc[-1].nlargest(n) 
+0

簡単な提案、piRSquaredありがとう。したがって 'stock1.iloc [-1]'は 'stock1.tail(1).max()'に相当します。残念ながら、idxmax()は 'ValueError'を返し、' nlargest(1) 'はTypeErrorを返します。 :/ – MichaelRSF

+0

エラーが見つかりました。無名:0列が私が削除する必要が生成されたように見えます。それは今、働いているようだ、piRS! – MichaelRSF

+0

'stock1.iloc [-1]'は 'stock1.tail(1)'と同じではありません。前者は、カラム値をインデックスとして 'pd.Series'オブジェクトを返します。後者は、最後の行である単一の行を持つ 'pd.DataFrame'を返します。 'pd.Series'で' max'または 'idxmax'を呼び出すと、最大値に関連付けられたインデックス値(以前は' stock1'の列)が返されます。また、 'nlargest'は' pd.Series'と 'pd.DataFrame'のコンテキストでは異なった挙動を示し、' TypeError'のソースです。 – piRSquared

関連する問題