2017-10-19 68 views
1

對於一個任務(我是一個初學者),我必須找到最大值。溫度和相應的日期。這是我的代碼,但它不起作用。我知道我定義的日期錯誤,或者我應該嘗試另一種方法,但我不知道做什麼不同。我得到以下錯誤:類型錯誤:在類不能做標籤索引「pandas.core.indexes.range.RangeIndex」這些索引[-1.3]類的numpy.float64「的找到值對應的其他值

這是我的代碼:

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

還有就是皮膚貓不止一種方法 - 這種方法是不是最有效的,但這裏的理念是:

將溫度放在一個列表中,並將日期放在另一個列表中。查找列表中溫度的最大值及其位置。使用該位置查找與最高溫度相對應的日期。

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所說,這種方法是有效的,但它遠非最佳。我建議繼續使用您的Pandas解決方案。學習使用熊貓將比學習循環列表更有益。不要誤解,cer的答案是有用的,但從數據分析的角度來看,學習如何在熊貓中進行操作會更有益處。 – tnknepp

+0

我明白了,我要去嘗試cer的方法:) – Julia

0

您在使用溫度作爲該行的索引值:

date = data["DATE"][maxvalue] 

MAXVALUE是溫度和你正在使用它作爲一個指標。您可以通過以下方式獲取索引值(即日期):

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

注意:如果使用浮點數,請小心比較浮點數值。

+0

當我這樣做,我得到這個輸出; 36.8 Int64Index([16978],dtype ='int64') – Julia

+0

啊,對不起,我認爲數據幀索引是日期時間。我更新了我的答案。 – tnknepp

+0

更新我的答案後,我看到你的原始解決方案並不遙遠!一個微小的錯誤,所以很高興知道你非常接近。 – tnknepp