import pandas as pdNO MORE!!!!
ex=pd.read_excel('events/cf25dat.xlsx')EX=ex[['ID','Title','Authors','Abstract']]# ex['Title']=ex['Title'].str.upper()# ex.to_excel('cf25dat.xlsx')gx=pd.read_csv('20250623 - Detailed Schedule - v10(FINAL).csv',encoding='unicode_escape')#CHANGE THIS TO MATCH NEW INPUT!/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!
gx[gx['EasyChair']!=gx['Unnamed: 12']]| 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
g=gx.dropna(subset=['EasyChair'])gx.loc[127]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
gx.loc[gx['EasyChair']==80].dropna(subset=['EasyChair'])| 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)absin=pd.read_csv('CAADFutures_abstractin.csv')g.shape(87, 16)
g=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)
datemape=dict(zip(g['EasyChair'],g['Date']))
timemape=dict(zip(g['EasyChair'],g['Time']))
topicmape=dict(zip(g['EasyChair'],g['session title']))
sessimape=dict(zip(g['EasyChair'],g['session code']))titlemap=dict(zip(g['EasyChair'],g['Unnamed: 13']))EX['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)/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)
datemape[80]KeyError: 80
EX.loc[EX['Final Topic'].isna(),'Final Topic']='CATALYTIC INTERFACE'EX.sort_values(by=['Date','Time'])| 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
EX.sort_values(by=['Date','Time']).to_excel('events/cf25dat.xlsx')NO MORE!!!!
trt=absin[absin['#']==27]putabs=dict(zip(absin['#'],absin['Abstract']))g['Date']=g['FILTER OPTIONS.1']topicmape=dict(zip(g['EasyChair'],g['session title']))
sessimape=dict(zip(g['EasyChair'],g['session code']))timemape=dict(zip(g['EasyChair'],g['Time']))idex=ex['ID'].unique()g['EasyChair']=g['EasyChair'].astype(int)
datemape=dict(zip(g['EasyChair'],g['Date']))
timemape=dict(zip(g['EasyChair'],g['Time']))
topicmape=dict(zip(g['EasyChair'],g['session title']))
sessimape=dict(zip(g['EasyChair'],g['session code']))# g['EasyChair']ex.loc[ex['ID']==135][c for c in g['EasyChair'].unique() if c not in idex][c for c in idex if c not in g['EasyChair'].unique()]ex=ex.loc[~ex['ID'].isin([214, 376, 283, 27])]en=ex[['ID','Title','Authors','Final Topic','Session','Abstract']]
en.reset_index(inplace=True)# trtg['EasyChair']# #One-off 27 to be added.
en.loc[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]ex['Session']=ex['ID'].map(sessimape)g[g['EasyChair']==135]ex.loc[ex['ID']==135]# sessimape['27']en.loc[88,'Session']=sessimape[27]
en.loc[88,'Final Topic']=topicmape[27]en.tail(3)# 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 +=1en['Session']=en['ID'].map(sessimape)# en.loc[en['Final Topic'].isna(),'Final Topic']='Catalytic Interface'
# # en.loc[en.tail(6).index,'Final Topic']='Catalyip2drop=[c for c in idex if c not in g['EasyChair'].unique()]en.shapeen['Date']=en['ID'].map(datemape)
en['Time']=en['ID'].map(timemape)en.loc[~en['ID'].isin(p2drop)].to_excel('events/cf25dat.xlsx')en# en.loc[87,'Abstract']=putabs[458]# putabs[458]# tnt=g[g['EasyChair']==458]
# en.loc[87]=87+4,tnt['EasyChair'],tnt['title'],tnt['atn=absin.loc[absin['#']==i].valuestn[0][0]g[g['EasyChair']==i].valuestnt['EasyChair'].values[0]ex['Date']=ex['ID'].map(datemape)
ex['Time']=ex['ID'].map(timemape)
ex['Session']=ex['ID'].map(sessimape)ex.to_excel('events/cf25dat.xlsx')