有谁知道如何在牛郎星图表中处理时间(持续时间-而不是一天中的几个小时)?
我有一个Pandas数据集,每行代表一个航班。有两列,第一列string
表示人名,另一列Pandas.Timedelta
表示飞行时间。我想在牛郎星图中显示这些信息,在“X轴”中按人员分组,在“Y”轴中以hh:mm:ss格式显示累计飞行小时。
这是我的数据集和我试图做的事情。
import pandas as pd
import altair as alt
import streamlit as st
data = pd.DataFrame({'Name': ['MARCOS', 'JOE', 'MICHAEL', 'MARCOS', 'MICHAEL', 'MARCOS', 'MARCOS'],
'Flight hours': [pd.Timedelta(50, 'hours'),
pd.Timedelta(30, 'hours'),
pd.Timedelta(20, 'hours'),
pd.Timedelta(10, 'hours'),
pd.Timedelta(70, 'hours'),
pd.Timedelta(20, 'hours'),
pd.Timedelta(10, 'hours')]})
data_grouped = pd.groupby(data)[['Fligh hours']].sum()
chart = alt.Chart(data_grouped).mark_bar().encode()
st.altair_chart(chart)
我得到这个错误。
Error: Unrecognized type: "Duration" (18)
这就是我想要的结果
Link to the graphic sample desired
谢谢
1条答案
按热度按时间3yhwsihp1#
一般来说,在Streamlit之外进行故障排除是有益的;在这种情况下,如果你直接使用altair,你会得到一个错误信息,为你指明正确的方向。你可以这样做:
我无法让它与hh:mm:ss输出一起工作,在这个线程中有一个建议https://github.com/altair-viz/altair/issues/967#issuecomment-399774414,但我不知道如何摆脱
days
,所以这是我得到的最接近的: