Pandas选取单列时列名缺失问题及便捷解决方法
保留DataFrame列名的便捷选取方法
当用以下方式选取Pandas DataFrame的speed列时:
df.speed # 自动补全很方便... df['speed'] df.loc[:,'speed']
返回的是Series对象,只会显示索引和数据,缺失列名:
Time 2022-07-27 11:33:16.279157 45.000000 2022-07-27 11:33:16.628157 44.928571 2022-07-27 11:33:17.093157 44.857143 2022-07-27 11:33:17.449157 44.785714
而使用df.filter(regex="speed")时,返回的是DataFrame对象,会保留列名:
speed Time 2022-07-27 11:33:16.279157 45.000000 2022-07-27 11:33:16.628157 44.928571 2022-07-27 11:33:17.093157 44.857143 2022-07-27 11:33:17.449157 44.785714 2022-07-27 11:33:17.885157 44.714286
这导致df.filter(regex="speed").plot()能直接生成带正确值轴名称的图表,而df.speed.plot(label="speed")必须配合plt.legend()才能显示图例。以下是几种更便捷的处理方式:
用列表形式选取列:把列名放进列表,返回的是DataFrame而非Series,既能保留自动补全的便利,又能保留列名:
df[['speed']] df.loc[:, ['speed']]直接调用
.plot()就会自动带上列名作为图例和轴标签,无需额外设置。Series转DataFrame:如果习惯用
df.speed这种属性访问方式,拿到Series后用to_frame()快速转换:df.speed.to_frame().plot()转换后再绘图就会自动识别列名。
plot时直接设置参数:不想改数据结构的话,直接在
plot()里指定参数一步到位:df.speed.plot(ylabel='speed', legend=True)不用单独调用
plt.legend(),就能得到带正确标签的图表。
内容的提问来源于stack exchange,提问作者Falco Alexander
相关产品推荐
相关产品推荐

