Plotly表格日期列排序异常及时间戳显示问题求助
Plotly表格日期排序与时间戳显示问题解决
问题1:DataFrame按日期降序排序后,Plotly表格未同步顺序
原因
df.sort_values(by='Date',ascending=False)默认不会修改原DataFrame,而是返回一个排序后的新对象。你没把这个新结果赋值给原df,导致Plotly调用的还是未排序的原始数据。
解决方法
二选一即可:
- 直接修改原df:
df.sort_values(by='Date', ascending=False, inplace=True) - 将排序结果重新赋值给df:
df = df.sort_values(by='Date', ascending=False)
问题2:DataFrame中无时间戳,但Plotly表格显示时间戳
原因
你的Date列是datetime类型,Pandas显示DataFrame时会自动省略默认的00:00:00时间部分,但Plotly渲染datetime类型数据时,会完整展示日期和时间戳。
解决方法
把datetime类型的日期转换成指定格式的字符串,Plotly就只会显示日期部分:
在排序步骤前添加一行代码:
df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')
修改后的完整代码
data = response.json() data1 = data['data'] rates = data1['rates'] rates_dic = rates.items() df = pd.DataFrame(rates_dic) df[1] = [x[symbol] for x in df[1]] df.rename(columns = {0:'Date', 1:'Price'}, inplace=True) df.Price = 1 / df.Price df['Price'] = df['Price'].map('${:,.2f}'.format) df['Date'] = pd.to_datetime(df['Date']) # 转换日期为字符串,移除时间戳 df['Date'] = df['Date'].dt.strftime('%Y-%m-%d') # 对日期降序排序 df.sort_values(by='Date', ascending=False, inplace=True) fig = go.Figure(data=[go.Table( columnorder = [1,2], columnwidth=[1,1], header=dict(values=list(df.columns), fill_color='black', align='center'), cells=dict(values=[df.Date, df.Price], fill_color='black', align='left')) ]) fig.layout.width=500 fig.layout.height=1000 fig.update_traces(header_font=dict(size=15))
内容的提问来源于stack exchange,提问作者langermc
相关产品推荐
相关产品推荐

