如何移除Pandas DataFrame表头首行并修改列名为RSI
解决Pandas DataFrame索引与列名格式化问题
我通过getRSI函数获取到一个Pandas DataFrame,当前数据结构如下:
RSI Date 2023-10-02 00:00:00+11:00 NaN 2023-10-03 00:00:00+11:00 NaN 2023-10-04 00:00:00+11:00 NaN 2023-10-05 00:00:00+11:00 NaN 2023-10-06 00:00:00+11:00 NaN 2023-10-09 00:00:00+11:00 NaN 2023-10-10 00:00:00+11:00 NaN 2023-10-11 00:00:00+11:00 NaN 2023-10-12 00:00:00+11:00 NaN 2023-10-13 00:00:00+11:00 NaN 2023-10-16 00:00:00+11:00 NaN 2023-10-17 00:00:00+11:00 NaN 2023-10-18 00:00:00+11:00 NaN 2023-10-19 00:00:00+11:00 NaN 2023-10-20 00:00:00+11:00 47.058827 2023-10-23 00:00:00+11:00 50.212766 2023-10-24 00:00:00+11:00 47.185484 2023-10-25 00:00:00+11:00 44.308668 2023-10-26 00:00:00+11:00 44.308668 2023-10-27 00:00:00+11:00 44.308668 2023-10-30 00:00:00+11:00 44.308668
我需要移除索引对应的空表头行,将Date设为第一列列名,保留第二列的RSI列名,最终效果如下:
Date RSI 2023-10-02 00:00:00+11:00 NaN 2023-10-03 00:00:00+11:00 NaN 2023-10-04 00:00:00+11:00 NaN 2023-10-05 00:00:00+11:00 NaN 2023-10-06 00:00:00+11:00 NaN 2023-10-09 00:00:00+11:00 NaN 2023-10-10 00:00:00+11:00 NaN 2023-10-11 00:00:00+11:00 NaN 2023-10-12 00:00:00+11:00 NaN 2023-10-13 00:00:00+11:00 NaN 2023-10-16 00:00:00+11:00 NaN 2023-10-17 00:00:00+11:00 NaN 2023-10-18 00:00:00+11:00 NaN 2023-10-19 00:00:00+11:00 NaN 2023-10-20 00:00:00+11:00 47.058827 2023-10-23 00:00:00+11:00 50.212766 2023-10-24 00:00:00+11:00 47.185484 2023-10-25 00:00:00+11:00 44.308668 2023-10-26 00:00:00+11:00 44.308668 2023-10-27 00:00:00+11:00 44.308668 2023-10-30 00:00:00+11:00 44.308668
我尝试过df.iloc[0]等方法但未成功,当前代码如下:
rsiData = getRSI(asx_stock) print("rsiData type:", type(rsiData)) df = pd.DataFrame(data=rsiData) print(df) monthly_rsiData_html = Markup(df.to_html())
解决方案
问题核心是Date当前是DataFrame的索引,而非普通列,导致显示时出现空表头行。只需将索引转为普通列即可实现目标效果:
方法1:直接重置索引
rsiData = getRSI(asx_stock) # 将索引转为普通列,原索引名Date会自动成为列名 df = rsiData.reset_index() print(df) monthly_rsiData_html = Markup(df.to_html())
方法2:手动指定列名(应对异常情况)
如果重置索引后列名不符合预期,可手动设置:
rsiData = getRSI(asx_stock) df = rsiData.reset_index() # 强制指定列名 df.columns = ['Date', 'RSI'] print(df) monthly_rsiData_html = Markup(df.to_html())
说明
df.iloc[0]用于选取行数据,无法解决索引转列的问题,因此无效。- 将索引转为普通列后,
Date会和RSI列名显示在同一行,消除多余的空表头。
内容的提问来源于stack exchange,提问作者mylottofinder.com.au
相关产品推荐
相关产品推荐

