2017-02-24 230 views
1

我正嘗試從包含 雨季值(VM)和日期(ISTANTE)的csv創建日曆熱圖。pd.series更改列的值

IDSTAZ,SENSORE,ISTANTE,VM 
56,300001896,201601010000,0.0 
56,300001896,201601020000,0.2 
56,300001896,201601030000,0.6 
56,300001896,201601040000,1.8 

搜索網頁我寫下面的代碼上:

import pandas as pd 
import calmap 
import matplotlib.pyplot as plt 

df = pd.read_csv('D:\\GIS\\Dati\\Meteo_arpav\\stazione_forno.csv') 
df['DateTime'] = df['ISTANTE'].apply(lambda x: pd.to_datetime(str(x), format='%Y%m%d%H%M')) 
events = pd.Series((df['VM']), index=df['DateTime']) 
a=calmap.calendarplot(events) 
plt.show(a) 

它的工作,但是當我創建VM的series所有值成爲NaN。 印刷(事件)這就是結果:

DateTime 
2016-01-01 NaN 
2016-01-02 NaN 
2016-01-03 NaN 
2016-01-04 NaN 
2016-01-05 NaN 
2016-01-06 NaN 
2016-01-07 NaN 
2016-01-08 NaN 
2016-01-09 NaN 

這樣日曆熱圖出來空。任何想法?

回答

1

看來你需要set_index創建Series

df['DateTime'] = pd.to_datetime(df['ISTANTE'], format='%Y%m%d%H%M') 
events = df.set_index('DateTime')['VM'] 
print (events) 
DateTime 
2016-01-01 0.0 
2016-01-02 0.2 
2016-01-03 0.6 
2016-01-04 1.8 
Name: VM, dtype: float64 

之所以不工作:

events = pd.Series((df['VM']), index=df['DateTime']) 

是數據對齊。列​​(Series)的索引要對齊DatetimeIndex,但值不匹配,所以結果爲NaN s。

+0

太好了。這是正確的答案! 我以爲索引是用'events = pd.Series((df ['VM']),index = df ['DateTime'])''創建的。非常感謝@jezrael –