import pandas as pd
NO MORE!!!!
=pd.read_excel('events/cf25dat.xlsx') ex
=ex[['ID','Title','Authors','Abstract']] EX
# ex['Title']=ex['Title'].str.upper()
# ex.to_excel('cf25dat.xlsx')
=pd.read_csv('20250623 - Detailed Schedule - v10(FINAL).csv',encoding='unicode_escape')#CHANGE THIS TO MATCH NEW INPUT! gx
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23829/2035001923.py:1: DtypeWarning: Columns (0,1,2,3,4,5,6,7,9,10,11,12,13,14,15) have mixed types. Specify dtype option on import or set low_memory=False.
gx=pd.read_csv('20250623 - Detailed Schedule - v10(FINAL).csv',encoding='unicode_escape')#CHANGE THIS TO MATCH NEW INPUT!
'EasyChair']!=gx['Unnamed: 12']] gx[gx[
FILTER OPTIONS | FILTER OPTIONS.1 | Time | session code | Presentations name | session title | title | authors | EasyChair | Unnamed: 9 | Unnamed: 10 | Unnamed: 11 | Unnamed: 12 | Unnamed: 13 | Session Chairs TBD | COMMENTS | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | NaN | 7/1/2025 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Tuesday 1 July | NaN | NaN | NaN | NaN | NaN | NaN |
1 | NaN | 7/1/2025 | 18:00 - 21:00 | NaN | Welcome Drinks | NaN | NaN | NaN | NaN | 18:00 - 21:00 | Welcome Drinks | NaN | NaN | NaN | NaN | NaN |
2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | NaN | 7/2/2025 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Wednesday 2 July | NaN | NaN | NaN | NaN | NaN | NaN |
4 | NaN | 7/2/2025 | 8:30 - 9:00 | NaN | Registration & Opening | NaN | NaN | NaN | NaN | 8:30 - 9:00 | Registration | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1048568 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1048569 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1048570 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1048571 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1048572 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1048573 rows × 16 columns
=gx.dropna(subset=['EasyChair']) g
127] gx.loc[
FILTER OPTIONS Parallel Paper Presentations
FILTER OPTIONS.1 7/4/2025
Time 12:10 - 12:20
session code P-A3
Presentations name Parallel Presentations 3
session title EVALUATING & EXPANDING AI
title AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ...
authors Xuyou Yang and Immanuel Koh
EasyChair 80.0
Unnamed: 9 NaN
Unnamed: 10 NaN
Unnamed: 11 12:10 - 12:20
Unnamed: 12 [ 80 ]
Unnamed: 13 AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ...
Session Chairs TBD NaN
COMMENTS NaN
Name: 127, dtype: object
'EasyChair']==80].dropna(subset=['EasyChair']) gx.loc[gx[
FILTER OPTIONS | FILTER OPTIONS.1 | Time | session code | Presentations name | session title | title | authors | EasyChair | Unnamed: 9 | Unnamed: 10 | Unnamed: 11 | Unnamed: 12 | Unnamed: 13 | Session Chairs TBD | COMMENTS | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
127 | Parallel Paper Presentations | 7/4/2025 | 12:10 - 12:20 | P-A3 | Parallel Presentations 3 | EVALUATING & EXPANDING AI | AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ... | Xuyou Yang and Immanuel Koh | 80.0 | NaN | NaN | 12:10 - 12:20 | [ 80 ] | AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ... | NaN | NaN |
# g[['Date','Time','session code']]
# df=g
# # --- 0) your original df has columns: Date, Time, session code
# # --- 1) drop any rows where Time, Date or code is missing
# df = df.dropna(subset=['Time','Date','session code'])
# # --- 2) pull out exactly two HH:MM groups (as strings)
# df[['start','end']] = df['Time'].str.extract(
# r'(\d{1,2}:\d{2})\s*-\s*(\d{1,2}:\d{2})'
# )
# # --- 3) drop rows where extract failed (you’ll now have only pure strings)
# df = df.dropna(subset=['start','end'])
# # --- 4) if you want to enforce two-digit hours, parse & re-format;
# # otherwise you can skip to step 5.
# df['start'] = (
# pd.to_datetime(df['start'], format='%H:%M', errors='coerce')
# .dt.strftime('%H:%M')
# )
# df['end'] = (
# pd.to_datetime(df['end'], format='%H:%M', errors='coerce')
# .dt.strftime('%H:%M')
# )
# # drop any rows that still failed parsing
# df = df.dropna(subset=['start','end'])
# # --- 5) group by code (and date), taking earliest start & latest end
# span = (
# df
# .groupby(['session code','Date'], as_index=False)
# .agg(
# start=('start','min'),
# end =('end', 'max')
# )
# )
# # --- 6) build your dict: code → "YYYY-MM-DD HH:MM - HH:MM"
# result = {
# row['session code']:
# f"{row['Date'].date()} {row['start']} - {row['end']}"
# for _, row in span.iterrows()
# }
# print(result)
=pd.read_csv('CAADFutures_abstractin.csv') absin
g.shape
(87, 16)
=g.drop([127]) g
'Date']=g['FILTER OPTIONS.1']
g['EasyChair']=g['EasyChair'].astype(str).replace('[','').str.replace(']','').str.strip().str.replace('[','').str.replace('.0','')
g['EasyChair']=g['EasyChair'].astype(int)
g[=dict(zip(g['EasyChair'],g['Date']))
datemape=dict(zip(g['EasyChair'],g['Time']))
timemape=dict(zip(g['EasyChair'],g['session title']))
topicmape=dict(zip(g['EasyChair'],g['session code'])) sessimape
=dict(zip(g['EasyChair'],g['Unnamed: 13'])) titlemap
'Date']=EX['ID'].map(datemape)
EX['Time']=EX['ID'].map(timemape)
EX['Session']=EX['ID'].map(sessimape)
EX['Final Topic']=EX['ID'].map(topicmape)
EX['TitleAlt']=EX['ID'].map(titlemap) EX[
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
EX['Date']=EX['ID'].map(datemape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:2: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
EX['Time']=EX['ID'].map(timemape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:3: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
EX['Session']=EX['ID'].map(sessimape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:4: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
EX['Final Topic']=EX['ID'].map(topicmape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:5: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
EX['TitleAlt']=EX['ID'].map(titlemap)
80] datemape[
KeyError: 80
'Final Topic'].isna(),'Final Topic']='CATALYTIC INTERFACE' EX.loc[EX[
=['Date','Time']) EX.sort_values(by
ID | Title | Authors | Abstract | Date | Time | Session | Final Topic | TitleAlt | |
---|---|---|---|---|---|---|---|---|---|
0 | 238 | DESIGN VALIDATION FOR ROBOTIC FABRICATION: A M... | Pok Yin Victor Leung and Yijiang Huang | The use of robotics in construction offers tra... | 7/2/2025 | 11:25 - 11:40 | S-S1 | INTELLIGENT ROBOTIC ASSEMBLY | DESIGN VALIDATION FOR ROBOTIC FABRICATION: A M... |
1 | 349 | TPACS: PHYGITAL-AIDED CONSTRUCTION SYSTEM BASE... | Yuhong Wu and Tiantian Lo | As construction complexity increases in the ar... | 7/2/2025 | 11:40 - 11:55 | S-S1 | INTELLIGENT ROBOTIC ASSEMBLY | TPACS: PHYGITAL-AIDED CONSTRUCTION SYSTEM BASE... |
2 | 36 | PARAMETRIC BIOMIMICRY: TRANSLATING SPIRAL SEAS... | Ali Farajmandi and Negar Kalantar | The architectural marvel of spiral seashells, ... | 7/2/2025 | 11:55 - 12:10 | S-S1 | INTELLIGENT ROBOTIC ASSEMBLY | PARAMETRIC BIOMIMICRY: TRANSLATING SPIRAL SEAS... |
3 | 169 | REC-ARCH: A CASE STUDY RECOMMENDER SYSTEM FOR ... | Danrui Li, Yichao Shi, Yaluo Wang, Ziying Shi ... | Efficiently searching for relevant case studie... | 7/2/2025 | 13:10 - 13:20 | P-B1 | AUGMENTING DESIGN GENERATION | REC-ARCH: A CASE STUDY RECOMMENDER SYSTEM FOR ... |
4 | 87 | MACHINE LEARNING AND MIXED REALITY-CONTROLLED ... | Qi Wang, Zhiyong Dong, Maowei Jiang and Peter Búš | Worker safety and operational efficiency remai... | 7/2/2025 | 13:10 - 13:20 | P-C1 | INTELLIGENT ROBOTICS & LAYOUT PLANNING | MACHINE LEARNING AND MIXED REALITY-CONTROLLED ... |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
84 | 389 | FROM AUGMENTATION TO AUTONOMY: HUMAN–XR–ROBOT ... | Igor Pantic, Soomeen Hahm, Peter Búš and Zhiyo... | The future of architectural practice is increa... | 7/4/2025 | 15:50 - 16:10 | CI | CATALYTIC INTERFACE | FROM AUGMENTATION TO AUTONOMY: HUMAN–XR–ROBOT ... |
85 | 427 | TOWARDS AIXR: DESIGNING A FRAMEWORK FOR AI-INF... | Matias del Campo, Joseph Kenny, Eleni Vasiliki... | This paper presents AIXR, a framework for arti... | 7/4/2025 | 16:10 - 16:30 | CI | CATALYTIC INTERFACE | TOWARDS AIXR: DESIGNING A FRAMEWORK FOR AI-INF... |
86 | 445 | BUILDINGS AS SYMBIOTIC SYSTEMS: CYBERNETIC ADA... | Davide Schaumann, Andrew Vande Moere, Yuval Ka... | Contemporary architectural design increasingly... | 7/4/2025 | 16:30 - 16:50 | CI | CATALYTIC INTERFACE | BUILDINGS AS SYMBIOTIC SYSTEMS: CYBERNETIC ADA... |
81 | 458 | CATALYTIC DESIGN INTERFACES: AI-GUIDED BUILDIN... | Tejas Chavan, Houssame E. Hsain, Camiel Weijen... | This paper presents HIKARI, a working prototyp... | 7/4/2025 | 16:50 - 17:10 | CI | CATALYTIC INTERFACE | CATALYTIC DESIGN INTERFACES: AI-GUIDED BUILDIN... |
69 | 80 | AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ... | Xuyou Yang and Immanuel Koh | Multimodal large language models (MLLMs), e.g.... | NaN | NaN | NaN | CATALYTIC INTERFACE | NaN |
87 rows × 9 columns
=['Date','Time']).to_excel('events/cf25dat.xlsx') EX.sort_values(by
NO MORE!!!!
=absin[absin['#']==27] trt
=dict(zip(absin['#'],absin['Abstract'])) putabs
'Date']=g['FILTER OPTIONS.1'] g[
=dict(zip(g['EasyChair'],g['session title']))
topicmape=dict(zip(g['EasyChair'],g['session code'])) sessimape
=dict(zip(g['EasyChair'],g['Time'])) timemape
=ex['ID'].unique() idex
'EasyChair']=g['EasyChair'].astype(int)
g[=dict(zip(g['EasyChair'],g['Date']))
datemape=dict(zip(g['EasyChair'],g['Time']))
timemape=dict(zip(g['EasyChair'],g['session title']))
topicmape=dict(zip(g['EasyChair'],g['session code'])) sessimape
# g['EasyChair']
'ID']==135] ex.loc[ex[
for c in g['EasyChair'].unique() if c not in idex] [c
for c in idex if c not in g['EasyChair'].unique()] [c
=ex.loc[~ex['ID'].isin([214, 376, 283, 27])] ex
=ex[['ID','Title','Authors','Final Topic','Session','Abstract']]
en=True) en.reset_index(inplace
# trt
'EasyChair'] g[
# #One-off 27 to be added.
88,'ID']=27
en.loc[88,'Title']=trt['Title'].values[0]
en.loc[88,'Authors']=trt['Authors'].values[0]
en.loc[88,'Abstract']=trt['Abstract'].values[0] en.loc[
'Session']=ex['ID'].map(sessimape) ex[
'EasyChair']==135] g[g[
'ID']==135] ex.loc[ex[
# sessimape['27']
88,'Session']=sessimape[27]
en.loc[88,'Final Topic']=topicmape[27] en.loc[
3) en.tail(
# absin.loc[absin['#']==457]
# en.head(2)
# topicmape[238]
# ct=81
# for i in [457, 82, 330, 389, 427, 445, 458]:
# try:
# id,aut,title,subs,typesub,timesub,abs=absin.loc[absin['#']==i].values[0]
# en.loc[ct]=ct+4,id,title,aut,topicmape[i],sessimape[i],abs
# except:
# print(i)
# tnt=g[g['EasyChair']==i]
# en.loc[87]=87+4,tnt['EasyChair'].values[0],tnt['title'].values[0],tnt['authors'].values[0],tnt['session title'].values[0],tnt['session code'].values[0],None
# ct +=1
'Session']=en['ID'].map(sessimape) en[
# en.loc[en['Final Topic'].isna(),'Final Topic']='Catalytic Interface'
# # en.loc[en.tail(6).index,'Final Topic']='Catalyi
=[c for c in idex if c not in g['EasyChair'].unique()] p2drop
en.shape
'Date']=en['ID'].map(datemape)
en['Time']=en['ID'].map(timemape) en[
~en['ID'].isin(p2drop)].to_excel('events/cf25dat.xlsx') en.loc[
en
# en.loc[87,'Abstract']=putabs[458]
# putabs[458]
# tnt=g[g['EasyChair']==458]
# en.loc[87]=87+4,tnt['EasyChair'],tnt['title'],tnt['a
=absin.loc[absin['#']==i].values tn
0][0] tn[
'EasyChair']==i].values g[g[
'EasyChair'].values[0] tnt[
'Date']=ex['ID'].map(datemape)
ex['Time']=ex['ID'].map(timemape)
ex['Session']=ex['ID'].map(sessimape) ex[
'events/cf25dat.xlsx') ex.to_excel(