我有一个 Dataframe ,我想用matplotlib绘制,但索引列是时间,我无法绘制它。
这是 Dataframe (df3):
但当我尝试以下操作时:
plt.plot(df3['magnetic_mag mean'], df3['YYYY-MO-DD HH-MI-SS_SSS'], label='FDI')
很明显,我得到了一个错误:
KeyError: 'YYYY-MO-DD HH-MI-SS_SSS'
因此,我想做的是添加一个新的额外列到我的 Dataframe (名为'时间),这只是一个副本的索引列。
我该怎么做?
下面是完整的代码:
#Importing the csv file into df
df = pd.read_csv('university2.csv', sep=";", skiprows=1)
#Changing datetime
df['YYYY-MO-DD HH-MI-SS_SSS'] = pd.to_datetime(df['YYYY-MO-DD HH-MI-SS_SSS'],
format='%Y-%m-%d %H:%M:%S:%f')
#Set index from column
df = df.set_index('YYYY-MO-DD HH-MI-SS_SSS')
#Add Magnetic Magnitude Column
df['magnetic_mag'] = np.sqrt(df['MAGNETIC FIELD X (μT)']**2 + df['MAGNETIC FIELD Y (μT)']**2 + df['MAGNETIC FIELD Z (μT)']**2)
#Subtract Earth's Average Magnetic Field from 'magnetic_mag'
df['magnetic_mag'] = df['magnetic_mag'] - 30
#Copy interesting values
df2 = df[[ 'ATMOSPHERIC PRESSURE (hPa)',
'TEMPERATURE (C)', 'magnetic_mag']].copy()
#Hourly Average and Standard Deviation for interesting values
df3 = df2.resample('H').agg(['mean','std'])
df3.columns = [' '.join(col) for col in df3.columns]
df3.reset_index()
plt.plot(df3['magnetic_mag mean'], df3['YYYY-MO-DD HH-MI-SS_SSS'], label='FDI')
感谢您发送编修。
3条答案
按热度按时间4ngedf3f1#
我认为您需要
reset_index
:可能的解决方案,但我认为
inplace
不是很好的做法,请检查此和this:但如果需要新列,用途:
我想你可以
read_csv
更好:然后省略:
编辑:如果MultiIndex或
Index
来自groupby操作,可能的解决方案如下:增加参数
as_index=False
:或者添加
reset_index
:c0vxltue2#
您可以直接在索引中访问并将其绘制出来,下面是一个示例:
ewm0tg9j3#
您也可以使用
eval
来达成此目的: