2017-10-19 6 views
1

割り当てのために(私は初心者です)私は最大値を見つけなければなりません。温度と対応する日付。これは私のコードですが、うまくいきません。私は日付を間違って定義していることを知っている、または私は別のアプローチを試みるべきだが、私は何をすべきか分からない。これは私です他の値に対応する値を見つける

これらのインデクサーとクラスのpandas.core.indexes.range.RangeIndex "のラベルのインデックス付けを行うことはできません[-1.3]クラスの「numpy.float64」:例外TypeError:私は次のエラーを取得しますコード:私のデータファイルの

import pandas as pd 
import matplotlib.pyplot as plt 

# read data 
data = pd.read_csv("klimaat.csv") 
data["TX"] /= 10 
maxvalue = data['TX'][0] 

for i in range(1, len(data["TX"])): 
    if(data["TX"][i] > maxvalue): 
     maxvalue = data["TX"][i] 

date = data["DATE"][maxvalue] 
print(maxvalue,date) 

スクリーンショット: csv file!

+0

あなたのデータがどのようなものであるかの抜粋を提供できますか? – cer

+0

@cer私は自分の投稿を編集しました! – Julia

答えて

0

猫の皮を剥ぐために複数の方法があります - このアプローチは、最も効率的ではありませんが、ここでは概念である:

温度を1つのリストに、日付を別のリストに入れます。リスト内の温度とその位置の最大値を求めます。場所を使用して、最高温度に対応する日付を検索します。

date = data["DATE"][maxvalue] 

MAXVALUEは温度であり、あなたは、インデックスとして使用されています

temperatures = [] 
dates = [] 

with open('filename.csv', 'r') as input_file: 
    input_file.readline() #this skips the header 
    for line in input_file.readlines(): 
     sLine = line.split(',') 

     date = sLine[2] 
     temp = sLine[3] 

     temperatures.append(temp) 
     dates.append(date) 


maxtemp = max(temperatures) 
location = temperatures.index(maxtemp) 

print(max(temperatures)) 
print(location) 
print(dates[location]) 
+0

あなたは私が持っているものを続けるべきではないと言っていますか? – Julia

+0

cerは言ったように、この方法は機能しますが、最適ではありません。あなたが持っているパンダのソリューションを続行することをお勧めします。パンダを使用することを学ぶことは、リストをループすることを学ぶことよりも有益です。誤解しないでください、cerの答えは有用ですが、データ分析の観点から、パンダでの操作方法の学習がより効果的になります。 – tnknepp

+0

私はそれを得る、私はcerのメソッドを試してみる:) – Julia

0

あなたは、この行のインデックス値としてご温度を使用しています。

date = data.DATE[data.TX==maxvalue] 

注:あなたは経由インデックス値(すなわち日付)を取得することができフロートを使用している場合は、浮動小数点値を比較する際に注意してください。

+0

私はそれを行うとき、私はこの出力を取得します。 36.8 Int64Index([16978]、dtype = 'int64') – Julia

+0

ああ、申し訳ありませんが、私はデータフレームインデックスがdatetimeだと思っていました。私は自分の答えを更新しました。 – tnknepp

+0

私の答えを更新した後、あなたのオリジナルの解決策はそれほど遠くないことがわかりました!軽微なエラーですので、あなたが非常に近くにいることを知って喜びを感じてください。 – tnknepp

関連する問題