猿问

'DataFrame' 对象没有属性 'map'

我在下面有以下命令:


datamax['Date'] = pd.to_datetime(datamax['Date'])

datamax2015['Date'] = pd.to_datetime(datamax2015['Date'])

datamax["day_of_year"] = datamax["Date"].dt.dayofyear

datamax2015["day_of_year"] = datamax["Date"].dt.dayofyear

datamaxappend = datamax2015.join(datamax,on="day_of_year",rsuffix="_new")

upper = datamaxappend.loc[datamaxappend["Data_Value_new"]<datamaxappend["Data_Value"]]


upper = upper.rename(columns={"Date_new":"Date","Data_Value_new":"Data_Value"})

lower = lower.rename(columns={"Date_new":"Date","Data_Value_new":"Data_Value"})

upper['Date'] = upper['Date'].map(lambda x: x.strftime("%d/%m/%Y, %H:%M:%S"))

lower['Date'] = lower['Date'].map(lambda x: x.strftime("%d/%m/%Y, %H:%M:%S"))  

但是,我不断收到错误消息:


'DataFrame' 对象没有属性 'map'


我对这是为什么感到困惑。有人可以帮我吗?


下方的数据框如下所示:


上:


     Date           ID Element  Data_Value  day_of_year       Date  \

3  2015-01-04  USW00094889    TMAX          44            4 2005-01-05   

4  2015-01-05  USW00094889    TMAX          28            5 2005-01-06   

5  2015-01-06  USW00094889    TMAX          33            6 2005-01-07   

14 2015-01-15  USW00094889    TMAX          -5           15 2005-01-16   

15 2015-01-16  USW00094889    TMAX           6           16 2005-01-17   


         ID_new Element_new  Data_Value  day_of_year_new  

3   USW00094889        TMAX          33                5  

4   USW00094889        TMAX           0                6  

5   USW00094889        TMAX           6                7  

14  USW00094889        TMAX         -33               16  

15  USW00094889        TMAX         -50               17  

慕后森
浏览 145回答 2
2回答

小怪兽爱吃肉

upper和lower数据框有两列称为Date.&nbsp;您正在使用upper['Date'].解决方案:将至少一列重命名为不同于日期的某项,然后将您的函数分别应用于每一列。

翻翻过去那场雪

返回 2005 年至 2014 年期间一年中各天的创纪录高温和低温记录折线图的 Python 代码。每天创纪录的最高气温和最低气温之间的区域应该用阴影标出。然后,为 2015 年打破十年记录(2005-2014 年)历史高点或历史低点的任何点(高点和低点)叠加 2015 年数据的散点图。删除闰年日期(即 2 月 29 日)。from datetime import datetimeimport pandas as pdimport matplotlib.pyplot as pltpd.set_option("display.max_rows",None,"display.max_columns",None)data = pd.read_csv('data/C2A2_data/BinnedCsvs_d400/fb441e62df2d58994928907a91895ec62c2c42e6cd075c2700843b89.csv')&nbsp;newdata = data[(data['Date'] >= '2005-01-01') & (data['Date'] <= '2014-12-12')]datamax = newdata[newdata['Element']=='TMAX']datamin = newdata[newdata['Element']=='TMIN']datamax['Date'] = pd.to_datetime(datamax['Date'])datamin['Date'] = pd.to_datetime(datamin['Date'])datamax["day_of_year"] = datamax["Date"].dt.dayofyeardatamax = datamax.groupby('day_of_year').max()datamin["day_of_year"] = datamin["Date"].dt.dayofyeardatamin = datamin.groupby('day_of_year').min()datamax = datamax.reset_index()datamin = datamin.reset_index()datamin['Date'] = datamin['Date'].dt.strftime('%Y-%m-%d')datamax['Date'] = datamax['Date'].dt.strftime('%Y-%m-%d')datamax = datamax[~datamax['Date'].str.contains("02-29")]datamin = datamin[~datamin['Date'].str.contains("02-29")]breakoutdata = data[(data['Date']&nbsp; > '2014-12-31')]datamax2015 = breakoutdata[breakoutdata['Element']=='TMAX']datamin2015 = breakoutdata[breakoutdata['Element']=='TMIN']datamax2015['Date'] = pd.to_datetime(datamax2015['Date'])datamin2015['Date'] = pd.to_datetime(datamin2015['Date'])datamax2015["day_of_year"] = datamax2015["Date"].dt.dayofyeardatamax2015 = datamax2015.groupby('day_of_year').max()datamin2015["day_of_year"] = datamin2015["Date"].dt.dayofyeardatamin2015 = datamin2015.groupby('day_of_year').min()datamax2015 = datamax2015.reset_index()datamin2015 = datamin2015.reset_index()datamin2015['Date'] = datamin2015['Date'].dt.strftime('%Y-%m-%d')datamax2015['Date'] = datamax2015['Date'].dt.strftime('%Y-%m-%d')datamax2015 = datamax2015[~datamax2015['Date'].str.contains("02-29")]datamin2015 = datamin2015[~datamin2015['Date'].str.contains("02-29")]dataminappend = datamin2015.join(datamin,on="day_of_year",rsuffix="_new")lower = dataminappend.loc[dataminappend["Data_Value_new"]>dataminappend["Data_Value"]]datamaxappend = datamax2015.join(datamax,on="day_of_year",rsuffix="_new")upper = datamaxappend.loc[datamaxappend["Data_Value_new"]<datamaxappend["Data_Value"]]upper['Date'] = pd.to_datetime(upper['Date'])&nbsp;lower['Date'] = pd.to_datetime(lower['Date'])&nbsp;datamax['Date'] = pd.to_datetime(datamax['Date'])&nbsp;datamin['Date'] = pd.to_datetime(datamin['Date'])&nbsp;ax = plt.gca()plt.plot(datamax['day_of_year'],datamax['Data_Value'],color='red')plt.plot(datamin['day_of_year'],datamin['Data_Value'], color='blue')plt.scatter(upper['day_of_year'],upper['Data_Value'],color='purple')plt.scatter(lower['day_of_year'],lower['Data_Value'], color='cyan')plt.ylabel("Temperature (degrees C)",color='navy')plt.xlabel("Day of the year",color='navy',labelpad=15)plt.title('Record high and low temperatures by day between 2005-2014)', alpha=1.0,color='brown',y=1.08)ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.35),fancybox=False,labels=['Record high','Record low'])plt.xticks(rotation=30)plt.fill_between(range(len(datamax['Date'])), datamax['Data_Value'], datamin['Data_Value'],color='yellow',alpha=0.8)plt.show()我已使用 Datamin['Date'] = datamin['Date'].dt.strftime('%Y-%m-%d') 将“日期”列转换为字符串。然后我使用 upper['Date'] = pd.to_datetime(upper['Date']) 将其转换回 'datetime' 格式然后我使用“年份日期”作为 x 值。
随时随地看视频慕课网APP

相关分类

Python
我要回答