Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -33,6 +33,11 @@ with tabs[0]:
|
|
| 33 |
|
| 34 |
df['Shipment Status'] = df.apply(determine_status, axis=1)
|
| 35 |
df['ETA'] = pd.to_datetime(df['ETA'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
# Filter for Injection Gateway
|
| 38 |
injection_gateways = df['Injection Gateway'].dropna().unique().tolist()
|
|
@@ -62,22 +67,21 @@ with tabs[0]:
|
|
| 62 |
|
| 63 |
st.altair_chart(chart, use_container_width=True)
|
| 64 |
|
| 65 |
-
# Volume by
|
| 66 |
st.subheader("Shipment Volume by ETA")
|
| 67 |
-
|
| 68 |
-
volume_by_eta = df.groupby('ETA_Date').agg({
|
| 69 |
'MAWB': 'count',
|
| 70 |
'Cartons': 'sum',
|
| 71 |
'Packages': 'sum',
|
| 72 |
'Weights': 'sum'
|
| 73 |
}).reset_index().rename(columns={'MAWB': 'Shipment Count'})
|
| 74 |
|
| 75 |
-
st.dataframe(
|
| 76 |
|
| 77 |
-
line_chart = alt.Chart(
|
| 78 |
-
x='
|
| 79 |
y='Cartons:Q',
|
| 80 |
-
tooltip=['
|
| 81 |
).properties(height=400)
|
| 82 |
|
| 83 |
st.altair_chart(line_chart, use_container_width=True)
|
|
@@ -92,7 +96,7 @@ with tabs[0]:
|
|
| 92 |
else:
|
| 93 |
filtered_df = df[df['Shipment Status'] == selected_status]
|
| 94 |
|
| 95 |
-
sorted_df = filtered_df[['MAWB', 'ETA', 'ATA', 'Shipment Status', 'Cartons', 'Last Mile Carrier']].sort_values(by='ETA')
|
| 96 |
st.dataframe(sorted_df, use_container_width=True)
|
| 97 |
|
| 98 |
with tabs[1]:
|
|
|
|
| 33 |
|
| 34 |
df['Shipment Status'] = df.apply(determine_status, axis=1)
|
| 35 |
df['ETA'] = pd.to_datetime(df['ETA'])
|
| 36 |
+
df['ATA'] = pd.to_datetime(df['ATA'])
|
| 37 |
+
|
| 38 |
+
# Fallback date: ATA if available, otherwise ETA
|
| 39 |
+
df['Final Arrival Date'] = df['ATA'].fillna(df['ETA'])
|
| 40 |
+
df['Final Arrival Date'] = pd.to_datetime(df['Final Arrival Date']).dt.date
|
| 41 |
|
| 42 |
# Filter for Injection Gateway
|
| 43 |
injection_gateways = df['Injection Gateway'].dropna().unique().tolist()
|
|
|
|
| 67 |
|
| 68 |
st.altair_chart(chart, use_container_width=True)
|
| 69 |
|
| 70 |
+
# Volume by final arrival date (ATA preferred, fallback to ETA)
|
| 71 |
st.subheader("Shipment Volume by ETA")
|
| 72 |
+
volume_by_arrival = df.groupby('Final Arrival Date').agg({
|
|
|
|
| 73 |
'MAWB': 'count',
|
| 74 |
'Cartons': 'sum',
|
| 75 |
'Packages': 'sum',
|
| 76 |
'Weights': 'sum'
|
| 77 |
}).reset_index().rename(columns={'MAWB': 'Shipment Count'})
|
| 78 |
|
| 79 |
+
st.dataframe(volume_by_arrival, use_container_width=True)
|
| 80 |
|
| 81 |
+
line_chart = alt.Chart(volume_by_arrival).mark_line(point=True).encode(
|
| 82 |
+
x='Final Arrival Date:T',
|
| 83 |
y='Cartons:Q',
|
| 84 |
+
tooltip=['Final Arrival Date:T', 'Shipment Count:Q', 'Cartons:Q', 'Packages:Q', 'Weights:Q']
|
| 85 |
).properties(height=400)
|
| 86 |
|
| 87 |
st.altair_chart(line_chart, use_container_width=True)
|
|
|
|
| 96 |
else:
|
| 97 |
filtered_df = df[df['Shipment Status'] == selected_status]
|
| 98 |
|
| 99 |
+
sorted_df = filtered_df[['MAWB', 'ETA', 'ATA', 'Shipment Status', 'Cartons', 'Last Mile Carrier', 'Exception Note Description']].sort_values(by='ETA')
|
| 100 |
st.dataframe(sorted_df, use_container_width=True)
|
| 101 |
|
| 102 |
with tabs[1]:
|