Skip to content

Instantly share code, notes, and snippets.

@chuongmep
Last active January 8, 2024 02:34
Show Gist options
  • Save chuongmep/9d08cab6dff8c1545967761fe00ad640 to your computer and use it in GitHub Desktop.
Save chuongmep/9d08cab6dff8c1545967761fe00ad640 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import os\n",
"import sys"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Discipline</th>\n",
" <th>ACC Catalog Ref.</th>\n",
" <th>Manufacturer</th>\n",
" <th>Manufacturer Model Number</th>\n",
" <th>Type Size/Dimension</th>\n",
" <th>Updated Revit Family Name</th>\n",
" <th>Original Family Name</th>\n",
" <th>Prior By Request</th>\n",
" <th>Prior By Spec Availability</th>\n",
" <th>Prior By Parametric Potential</th>\n",
" <th>...</th>\n",
" <th>Planned Completed Date</th>\n",
" <th>Start date</th>\n",
" <th>Due date</th>\n",
" <th>Completed Date</th>\n",
" <th>Assign to</th>\n",
" <th>ID</th>\n",
" <th>Element ID</th>\n",
" <th>PIC</th>\n",
" <th>Status</th>\n",
" <th>Count</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>...</td>\n",
" <td>2024-01-02 00:00:00</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-03 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-04 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-05 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-01 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1332</th>\n",
" <td>K</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-01 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1333</th>\n",
" <td>K</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-01 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1334</th>\n",
" <td>K</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-01 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1335</th>\n",
" <td>K</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-01 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1336</th>\n",
" <td>K</td>\n",
" <td>NaN</td>\n",
" <td>Manufacturer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>2024-01-01 00:00:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1337 rows × 40 columns</p>\n",
"</div>"
],
"text/plain": [
" Discipline ACC Catalog Ref. Manufacturer Manufacturer Model Number \\\n",
"0 S NaN Manufacturer NaN \n",
"1 S NaN Manufacturer NaN \n",
"2 S NaN Manufacturer NaN \n",
"3 S NaN Manufacturer NaN \n",
"4 S NaN Manufacturer NaN \n",
"... ... ... ... ... \n",
"1332 K NaN Manufacturer NaN \n",
"1333 K NaN Manufacturer NaN \n",
"1334 K NaN Manufacturer NaN \n",
"1335 K NaN Manufacturer NaN \n",
"1336 K NaN Manufacturer NaN \n",
"\n",
" Type Size/Dimension Updated Revit Family Name Original Family Name \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"... ... ... ... \n",
"1332 NaN NaN NaN \n",
"1333 NaN NaN NaN \n",
"1334 NaN NaN NaN \n",
"1335 NaN NaN NaN \n",
"1336 NaN NaN NaN \n",
"\n",
" Prior By Request Prior By Spec Availability \\\n",
"0 3 3 \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"... ... ... \n",
"1332 NaN NaN \n",
"1333 NaN NaN \n",
"1334 NaN NaN \n",
"1335 NaN NaN \n",
"1336 NaN NaN \n",
"\n",
" Prior By Parametric Potential ... Planned Completed Date Start date \\\n",
"0 3 ... 2024-01-02 00:00:00 1 \n",
"1 NaN ... 2024-01-03 00:00:00 NaN \n",
"2 NaN ... 2024-01-04 00:00:00 NaN \n",
"3 NaN ... 2024-01-05 00:00:00 NaN \n",
"4 NaN ... 2024-01-01 00:00:00 NaN \n",
"... ... ... ... ... \n",
"1332 NaN ... 2024-01-01 00:00:00 NaN \n",
"1333 NaN ... 2024-01-01 00:00:00 NaN \n",
"1334 NaN ... 2024-01-01 00:00:00 NaN \n",
"1335 NaN ... 2024-01-01 00:00:00 NaN \n",
"1336 NaN ... 2024-01-01 00:00:00 NaN \n",
"\n",
" Due date Completed Date Assign to ID Element ID PIC Status Count \n",
"0 1 1 NaN NaN NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"... ... ... ... ... ... ... ... ... \n",
"1332 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"1333 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"1334 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"1335 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"1336 NaN NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
"[1337 rows x 40 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path = r\"Objects Master List.xlsx\"\n",
"column_types = {col: str for col in pd.read_excel(path, sheet_name=\"Sheet1\", nrows=0).columns}\n",
"df = pd.read_excel(path, sheet_name=\"Sheet1\",dtype=column_types)\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Assembly Code</th>\n",
" <th>Assembly Description</th>\n",
" <th>Assembly Order</th>\n",
" <th>Revit Code</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A1001.00</td>\n",
" <td>Foundations-Foundation Accessories-GENERAL--</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A1007.00</td>\n",
" <td>Foundations-TieBeam-GENERAL--</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A1010.02.000</td>\n",
" <td>Foundations-Standard -COMBINED FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001309</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A1010.03.000</td>\n",
" <td>Foundations-Standard -ISOMETRIC FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A1010.04.000</td>\n",
" <td>Foundations-Standard -STRIPFOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1332</th>\n",
" <td>K1020.06.000</td>\n",
" <td>Cleanroom-Cleanroom Elec-WALL EARTH--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1333</th>\n",
" <td>K1030.01.000</td>\n",
" <td>Cleanroom-Clearnroom Arch-PLENUM DIVIDER--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1334</th>\n",
" <td>K1030.02.000</td>\n",
" <td>Cleanroom-Clearnroom Arch-PLENUM SEPARATION--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1335</th>\n",
" <td>K1030.03.000</td>\n",
" <td>Cleanroom-Clearnroom Arch-AIR SHOWER--</td>\n",
" <td>5</td>\n",
" <td>-2001160</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1336</th>\n",
" <td>K1041.01</td>\n",
" <td>Cleanroom-AMHS-AMHS SUPPORT--</td>\n",
" <td>4</td>\n",
" <td>-2000151</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1337 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" Assembly Code Assembly Description \\\n",
"0 A1001.00 Foundations-Foundation Accessories-GENERAL-- \n",
"1 A1007.00 Foundations-TieBeam-GENERAL-- \n",
"2 A1010.02.000 Foundations-Standard -COMBINED FOOTING-- \n",
"3 A1010.03.000 Foundations-Standard -ISOMETRIC FOOTING-- \n",
"4 A1010.04.000 Foundations-Standard -STRIPFOOTING-- \n",
"... ... ... \n",
"1332 K1020.06.000 Cleanroom-Cleanroom Elec-WALL EARTH-- \n",
"1333 K1030.01.000 Cleanroom-Clearnroom Arch-PLENUM DIVIDER-- \n",
"1334 K1030.02.000 Cleanroom-Clearnroom Arch-PLENUM SEPARATION-- \n",
"1335 K1030.03.000 Cleanroom-Clearnroom Arch-AIR SHOWER-- \n",
"1336 K1041.01 Cleanroom-AMHS-AMHS SUPPORT-- \n",
"\n",
" Assembly Order Revit Code \n",
"0 4 -2001300 \n",
"1 4 -2001300 \n",
"2 5 -2001309 \n",
"3 5 -2001300 \n",
"4 5 -2001300 \n",
"... ... ... \n",
"1332 5 -2000151 \n",
"1333 5 -2000151 \n",
"1334 5 -2000151 \n",
"1335 5 -2001160 \n",
"1336 4 -2000151 \n",
"\n",
"[1337 rows x 4 columns]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# just get the columns we need : Assembly Code, UF Name Complete, Assembly Order, Revit Code\n",
"df_uniformat = df[['Assembly Code', 'Assembly Description', 'Assembly Order', 'Revit Code']]\n",
"df_uniformat"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A10</td>\n",
" <td>Foundations</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A1001</td>\n",
" <td>Foundation Accessories</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A1001.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A1002</td>\n",
" <td>Termite Barrier</td>\n",
" <td>3</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>A1002.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>A1003</td>\n",
" <td>Waterproofing</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>A1003.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>A1007</td>\n",
" <td>TieBeam</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>A1007.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>A1010</td>\n",
" <td>Standard Foundations</td>\n",
" <td>3</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>A1010.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>A1010.01</td>\n",
" <td>Foundation, General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>A1010.02</td>\n",
" <td>Foundation, Combined Footing</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>A1010.02.000</td>\n",
" <td>Foundations-Standard -COMBINED FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>A1010.03</td>\n",
" <td>Foundation, Isometric Footing</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>A1010.03.000</td>\n",
" <td>Foundations-Standard -ISOMETRIC FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>A1010.04</td>\n",
" <td>Foundation, StripFooting</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>A1010.04.000</td>\n",
" <td>Foundations-Standard -STRIPFOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>A1010.05</td>\n",
" <td>Foundation, FoundationWall</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3\n",
"0 A Discipline 1 NaN\n",
"1 A10 Foundations 2 NaN\n",
"2 A1001 Foundation Accessories 3 NaN\n",
"3 A1001.00 General 4 -2001300\n",
"4 A1002 Termite Barrier 3 -2001300\n",
"5 A1002.00 General 4 -2001300\n",
"6 A1003 Waterproofing 3 NaN\n",
"7 A1003.00 General 4 -2001300\n",
"8 A1007 TieBeam 3 NaN\n",
"9 A1007.00 General 4 -2001300\n",
"10 A1010 Standard Foundations 3 -2001300\n",
"11 A1010.00 General 4 -2001300\n",
"12 A1010.01 Foundation, General 4 -2001300\n",
"13 A1010.02 Foundation, Combined Footing 4 -2001300\n",
"14 A1010.02.000 Foundations-Standard -COMBINED FOOTING-- 5 -2001300\n",
"15 A1010.03 Foundation, Isometric Footing 4 -2001300\n",
"16 A1010.03.000 Foundations-Standard -ISOMETRIC FOOTING-- 5 -2001300\n",
"17 A1010.04 Foundation, StripFooting 4 -2001300\n",
"18 A1010.04.000 Foundations-Standard -STRIPFOOTING-- 5 -2001300\n",
"19 A1010.05 Foundation, FoundationWall 4 -2001300"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# read a text file that contains the uniformat hierarchy\n",
"path = r\"exyte_UniformatClassifications_2024.txt\"\n",
"# format is tab delimited\n",
"import csv\n",
"comlumn_types = [str, str, str, str]\n",
"df_uniformat_hierarchy = pd.read_csv(path, sep='\\t', header=None,dtype={i:col for i, col in enumerate(comlumn_types)})\n",
"df_uniformat_hierarchy.drop_duplicates(inplace=True)\n",
"df_uniformat_hierarchy.head(20)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"# path = r\"C:\\Users\\gpalermo\\Exyte\\Exyte SG_1501752_BIM VDC - BIM Library\\01_Working\\06_Assembly Code\\exyte_UniformatClassifications_2024.xlsx\"\n",
"# df_uniformat_hierarchy = pd.read_excel(path, sheet_name=\"Sheet1\")\n",
"# df_uniformat_hierarchy"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>best_index</th>\n",
" <th>best_similarity</th>\n",
" <th>match_text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>1.0</td>\n",
" <td>A1001.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9</td>\n",
" <td>1.0</td>\n",
" <td>A1007.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>14</td>\n",
" <td>1.0</td>\n",
" <td>A1010.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>16</td>\n",
" <td>1.0</td>\n",
" <td>A1010.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>18</td>\n",
" <td>1.0</td>\n",
" <td>A1010.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1332</th>\n",
" <td>2960</td>\n",
" <td>1.0</td>\n",
" <td>K1020.06.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1333</th>\n",
" <td>2964</td>\n",
" <td>1.0</td>\n",
" <td>K1030.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1334</th>\n",
" <td>2966</td>\n",
" <td>1.0</td>\n",
" <td>K1030.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1335</th>\n",
" <td>2968</td>\n",
" <td>1.0</td>\n",
" <td>K1030.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1336</th>\n",
" <td>2971</td>\n",
" <td>1.0</td>\n",
" <td>K1041.01</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1337 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" best_index best_similarity match_text\n",
"0 3 1.0 A1001.00\n",
"1 9 1.0 A1007.00\n",
"2 14 1.0 A1010.02.000\n",
"3 16 1.0 A1010.03.000\n",
"4 18 1.0 A1010.04.000\n",
"... ... ... ...\n",
"1332 2960 1.0 K1020.06.000\n",
"1333 2964 1.0 K1030.01.000\n",
"1334 2966 1.0 K1030.02.000\n",
"1335 2968 1.0 K1030.03.000\n",
"1336 2971 1.0 K1041.01\n",
"\n",
"[1337 rows x 3 columns]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get best index similarity Assembly Code from df_uniformat with df_uniformat_hierarchy column A\n",
"# and then create a new dataframe with the best index similarity\n",
"import re\n",
"import math\n",
"def jaccard_similarity(str1, str2):\n",
" text1 = str(str1).lower()\n",
" text2 = str(str2).lower()\n",
" # remove all the special characters\n",
" text1 = re.sub(r'\\W', ' ', text1)\n",
" text2 = re.sub(r'\\W', ' ', text2)\n",
" set1 = set(str(str1))\n",
" set2 = set(str(str2))\n",
" intersection = len(set1.intersection(set2))\n",
" union = len(set1) + len(set2) - intersection\n",
" similarity = intersection / union if union != 0 else 0\n",
" return similarity\n",
"def cosine_similarity(str1, str2):\n",
" text1 = str(str1).lower()\n",
" text2 = str(str2).lower()\n",
" \n",
" # Remove all the special characters like , or . or - or # etc.\n",
" text1 = re.sub(r'\\W', ' ', text1)\n",
" text2 = re.sub(r'\\W', ' ', text2)\n",
"\n",
" # Tokenize the strings into words\n",
" words1 = text1.split()\n",
" words2 = text2.split()\n",
"\n",
" # Create a set of unique words from both strings\n",
" word_set = set(words1 + words2)\n",
"\n",
" # Create vectors representing word occurrence in each string\n",
" vector1 = [words1.count(word) for word in word_set]\n",
" vector2 = [words2.count(word) for word in word_set]\n",
"\n",
" # Calculate the dot product of the vectors\n",
" dot_product = sum(x * y for x, y in zip(vector1, vector2))\n",
"\n",
" # Calculate the magnitudes of the vectors\n",
" magnitude1 = math.sqrt(sum(x**2 for x in vector1))\n",
" magnitude2 = math.sqrt(sum(x**2 for x in vector2))\n",
"\n",
" # Calculate the cosine similarity\n",
" similarity = dot_product / (magnitude1 * magnitude2) if magnitude1 != 0 and magnitude2 != 0 else 0\n",
"\n",
" return similarity\n",
"def get_best_index_similarity(df_uniformat, df_uniformat_hierarchy):\n",
" best_index_similarity = []\n",
" for i in range(len(df_uniformat)):\n",
" best_index = 0\n",
" best_similarity = 0\n",
" match_text = \"\"\n",
" for j in range(len(df_uniformat_hierarchy)):\n",
" similarity = cosine_similarity(df_uniformat_hierarchy.iloc[j,0], df_uniformat.iloc[i,0])\n",
" if similarity > best_similarity:\n",
" best_similarity = similarity\n",
" best_index = j\n",
" match_text = df_uniformat_hierarchy.iloc[j,0]\n",
" best_index_similarity.append([best_index, best_similarity, match_text])\n",
" # create a copy df_uniformat and two new columns: best_index and best_similarity\n",
" return pd.DataFrame(best_index_similarity, columns=['best_index', 'best_similarity', 'match_text'])\n",
"df_similiarity = get_best_index_similarity(df_uniformat, df_uniformat_hierarchy)\n",
"df_similiarity\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Assembly Code</th>\n",
" <th>Assembly Description</th>\n",
" <th>Assembly Order</th>\n",
" <th>Revit Code</th>\n",
" <th>best_index</th>\n",
" <th>best_similarity</th>\n",
" <th>match_text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A1001.00</td>\n",
" <td>Foundations-Foundation Accessories-GENERAL--</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" <td>3</td>\n",
" <td>1.0</td>\n",
" <td>A1001.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A1007.00</td>\n",
" <td>Foundations-TieBeam-GENERAL--</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" <td>9</td>\n",
" <td>1.0</td>\n",
" <td>A1007.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A1010.02.000</td>\n",
" <td>Foundations-Standard -COMBINED FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001309</td>\n",
" <td>14</td>\n",
" <td>1.0</td>\n",
" <td>A1010.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A1010.03.000</td>\n",
" <td>Foundations-Standard -ISOMETRIC FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>16</td>\n",
" <td>1.0</td>\n",
" <td>A1010.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A1010.04.000</td>\n",
" <td>Foundations-Standard -STRIPFOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>18</td>\n",
" <td>1.0</td>\n",
" <td>A1010.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>A1010.05.000</td>\n",
" <td>Foundations-Standard -FOUNDATIONWALL--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>20</td>\n",
" <td>1.0</td>\n",
" <td>A1010.05.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>A1010.06.000</td>\n",
" <td>Foundations-Standard -PCFOUNDATIONS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>22</td>\n",
" <td>1.0</td>\n",
" <td>A1010.06.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>A1010.07.000</td>\n",
" <td>Foundations-Standard -SPREADFOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>24</td>\n",
" <td>1.0</td>\n",
" <td>A1010.07.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>A1010.08.000</td>\n",
" <td>Foundations-Standard -COLUMN PIERS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>26</td>\n",
" <td>1.0</td>\n",
" <td>A1010.08.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>A1010.09.000</td>\n",
" <td>Foundations-Standard -RAFT FOUNDATIONS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>28</td>\n",
" <td>1.0</td>\n",
" <td>A1010.09.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>A1010.10.000</td>\n",
" <td>Foundations-Standard -PILE CAPS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>30</td>\n",
" <td>1.0</td>\n",
" <td>A1010.10.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>A1010.11.000</td>\n",
" <td>Foundations-Standard -GRADE BEAMS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>32</td>\n",
" <td>1.0</td>\n",
" <td>A1010.11.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>A1016.01.000</td>\n",
" <td>Foundations-Piling-GRID PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>36</td>\n",
" <td>1.0</td>\n",
" <td>A1016.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>A1016.02.000</td>\n",
" <td>Foundations-Piling-CAISSON PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>38</td>\n",
" <td>1.0</td>\n",
" <td>A1016.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>A1016.03.000</td>\n",
" <td>Foundations-Piling-BARRETTE PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>40</td>\n",
" <td>1.0</td>\n",
" <td>A1016.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>A1016.04.000</td>\n",
" <td>Foundations-Piling-SECANT PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>42</td>\n",
" <td>1.0</td>\n",
" <td>A1016.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>A1016.05.000</td>\n",
" <td>Foundations-Piling-DRIVEN PILES--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>44</td>\n",
" <td>1.0</td>\n",
" <td>A1016.05.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>A1016.06.000</td>\n",
" <td>Foundations-Piling-BORED PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>46</td>\n",
" <td>1.0</td>\n",
" <td>A1016.06.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>A1016.07.000</td>\n",
" <td>Foundations-Piling-MICRO PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>48</td>\n",
" <td>1.0</td>\n",
" <td>A1016.07.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>A1020.01.000</td>\n",
" <td>Foundations-Special -GRADE BEAMS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>52</td>\n",
" <td>1.0</td>\n",
" <td>A1020.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>A1020.02.000</td>\n",
" <td>Foundations-Special -CAISSONS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>54</td>\n",
" <td>1.0</td>\n",
" <td>A1020.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>A1020.03.000</td>\n",
" <td>Foundations-Special -UNDERPINNING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>56</td>\n",
" <td>1.0</td>\n",
" <td>A1020.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>A1020.04.000</td>\n",
" <td>Foundations-Special -DEWATERING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>58</td>\n",
" <td>1.0</td>\n",
" <td>A1020.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>A1020.05.000</td>\n",
" <td>Foundations-Special -RAFT FOUNDATIONS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" <td>60</td>\n",
" <td>1.0</td>\n",
" <td>A1020.05.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>A2010.01</td>\n",
" <td>Basement Construction-Excavation-TRENCH--</td>\n",
" <td>4</td>\n",
" <td>-2000151</td>\n",
" <td>74</td>\n",
" <td>1.0</td>\n",
" <td>A2010.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>A9000.01.000</td>\n",
" <td>Precast-General-COLUMN--</td>\n",
" <td>5</td>\n",
" <td>-2001330</td>\n",
" <td>87</td>\n",
" <td>1.0</td>\n",
" <td>A9000.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>A9000.02.000</td>\n",
" <td>Precast-General-BEAM--</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>89</td>\n",
" <td>1.0</td>\n",
" <td>A9000.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>A9000.03.000</td>\n",
" <td>Precast-General-FLOOR--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>91</td>\n",
" <td>1.0</td>\n",
" <td>A9000.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>A9000.06.000</td>\n",
" <td>Precast-General-COFFERDAM--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>95</td>\n",
" <td>1.0</td>\n",
" <td>A9000.06.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>B1000.01.000</td>\n",
" <td>Superstructure-Reinforced Concrete, General-RC...</td>\n",
" <td>5</td>\n",
" <td>-2001330</td>\n",
" <td>100</td>\n",
" <td>1.0</td>\n",
" <td>B1000.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>B1000.02.000</td>\n",
" <td>Superstructure-Reinforced Concrete, General-RC...</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>102</td>\n",
" <td>1.0</td>\n",
" <td>B1000.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>B1002.01.000</td>\n",
" <td>Superstructure-Steel Reinforcement, General-RC...</td>\n",
" <td>5</td>\n",
" <td>-2001330</td>\n",
" <td>109</td>\n",
" <td>1.0</td>\n",
" <td>B1002.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>B1002.02.000</td>\n",
" <td>Superstructure-Steel Reinforcement, General-RC...</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>111</td>\n",
" <td>1.0</td>\n",
" <td>B1002.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>B1002.04.000</td>\n",
" <td>Superstructure-Steel Reinforcement, General-RC...</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>114</td>\n",
" <td>1.0</td>\n",
" <td>B1002.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>B1005.01.000</td>\n",
" <td>Superstructure-Steel-COLUMN--</td>\n",
" <td>5</td>\n",
" <td>-2001330</td>\n",
" <td>118</td>\n",
" <td>1.0</td>\n",
" <td>B1005.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>B1005.02.000</td>\n",
" <td>Superstructure-Steel-BEAM--</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>120</td>\n",
" <td>1.0</td>\n",
" <td>B1005.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>B1005.03.000</td>\n",
" <td>Superstructure-Steel-STAIR--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>122</td>\n",
" <td>1.0</td>\n",
" <td>B1005.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>B1005.04.000</td>\n",
" <td>Superstructure-Steel-CONNECTIONS--</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>124</td>\n",
" <td>1.0</td>\n",
" <td>B1005.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>B1005.05.000</td>\n",
" <td>Superstructure-Steel-FRAMING AND BRACING--</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>126</td>\n",
" <td>1.0</td>\n",
" <td>B1005.05.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>B1005.07.000</td>\n",
" <td>Superstructure-Steel-STEEL-DECK--</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>129</td>\n",
" <td>1.0</td>\n",
" <td>B1005.07.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>B1008.00</td>\n",
" <td>Superstructure-Sump-GENERAL--</td>\n",
" <td>4</td>\n",
" <td>-2000151</td>\n",
" <td>131</td>\n",
" <td>1.0</td>\n",
" <td>B1008.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>B1009.01.000</td>\n",
" <td>Superstructure-Channel-Unistrut-CHANNEL MEMBER...</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>135</td>\n",
" <td>1.0</td>\n",
" <td>B1009.01.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>B1009.02.000</td>\n",
" <td>Superstructure-Channel-Unistrut-UNISTRUT RACKS--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>137</td>\n",
" <td>1.0</td>\n",
" <td>B1009.02.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>B1009.03.000</td>\n",
" <td>Superstructure-Channel-Unistrut-UNISTRUT CONNE...</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>139</td>\n",
" <td>1.0</td>\n",
" <td>B1009.03.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>B1010.04.000</td>\n",
" <td>Superstructure-Floor Construction-RAMP--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>146</td>\n",
" <td>1.0</td>\n",
" <td>B1010.04.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>B1010.06.000</td>\n",
" <td>Superstructure-Floor Construction-INCLINED &amp; S...</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>149</td>\n",
" <td>1.0</td>\n",
" <td>B1010.06.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>B1010.07.000</td>\n",
" <td>Superstructure-Floor Construction-EXPANSION &amp; ...</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>151</td>\n",
" <td>1.0</td>\n",
" <td>B1010.07.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>B1010.09.000</td>\n",
" <td>Superstructure-Floor Construction-CATWALKS--</td>\n",
" <td>5</td>\n",
" <td>-2001320</td>\n",
" <td>154</td>\n",
" <td>1.0</td>\n",
" <td>B1010.09.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>B1010.10.000</td>\n",
" <td>Superstructure-Floor Construction-SPACE FRAMES--</td>\n",
" <td>5</td>\n",
" <td>-2000151</td>\n",
" <td>156</td>\n",
" <td>1.0</td>\n",
" <td>B1010.10.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>B1011.00</td>\n",
" <td>Superstructure-Floor Opening-GENERAL--</td>\n",
" <td>4</td>\n",
" <td>-2000151</td>\n",
" <td>158</td>\n",
" <td>1.0</td>\n",
" <td>B1011.00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Assembly Code Assembly Description \\\n",
"0 A1001.00 Foundations-Foundation Accessories-GENERAL-- \n",
"1 A1007.00 Foundations-TieBeam-GENERAL-- \n",
"2 A1010.02.000 Foundations-Standard -COMBINED FOOTING-- \n",
"3 A1010.03.000 Foundations-Standard -ISOMETRIC FOOTING-- \n",
"4 A1010.04.000 Foundations-Standard -STRIPFOOTING-- \n",
"5 A1010.05.000 Foundations-Standard -FOUNDATIONWALL-- \n",
"6 A1010.06.000 Foundations-Standard -PCFOUNDATIONS-- \n",
"7 A1010.07.000 Foundations-Standard -SPREADFOOTING-- \n",
"8 A1010.08.000 Foundations-Standard -COLUMN PIERS-- \n",
"9 A1010.09.000 Foundations-Standard -RAFT FOUNDATIONS-- \n",
"10 A1010.10.000 Foundations-Standard -PILE CAPS-- \n",
"11 A1010.11.000 Foundations-Standard -GRADE BEAMS-- \n",
"12 A1016.01.000 Foundations-Piling-GRID PILE-- \n",
"13 A1016.02.000 Foundations-Piling-CAISSON PILE-- \n",
"14 A1016.03.000 Foundations-Piling-BARRETTE PILE-- \n",
"15 A1016.04.000 Foundations-Piling-SECANT PILE-- \n",
"16 A1016.05.000 Foundations-Piling-DRIVEN PILES-- \n",
"17 A1016.06.000 Foundations-Piling-BORED PILE-- \n",
"18 A1016.07.000 Foundations-Piling-MICRO PILE-- \n",
"19 A1020.01.000 Foundations-Special -GRADE BEAMS-- \n",
"20 A1020.02.000 Foundations-Special -CAISSONS-- \n",
"21 A1020.03.000 Foundations-Special -UNDERPINNING-- \n",
"22 A1020.04.000 Foundations-Special -DEWATERING-- \n",
"23 A1020.05.000 Foundations-Special -RAFT FOUNDATIONS-- \n",
"24 A2010.01 Basement Construction-Excavation-TRENCH-- \n",
"25 A9000.01.000 Precast-General-COLUMN-- \n",
"26 A9000.02.000 Precast-General-BEAM-- \n",
"27 A9000.03.000 Precast-General-FLOOR-- \n",
"28 A9000.06.000 Precast-General-COFFERDAM-- \n",
"29 B1000.01.000 Superstructure-Reinforced Concrete, General-RC... \n",
"30 B1000.02.000 Superstructure-Reinforced Concrete, General-RC... \n",
"31 B1002.01.000 Superstructure-Steel Reinforcement, General-RC... \n",
"32 B1002.02.000 Superstructure-Steel Reinforcement, General-RC... \n",
"33 B1002.04.000 Superstructure-Steel Reinforcement, General-RC... \n",
"34 B1005.01.000 Superstructure-Steel-COLUMN-- \n",
"35 B1005.02.000 Superstructure-Steel-BEAM-- \n",
"36 B1005.03.000 Superstructure-Steel-STAIR-- \n",
"37 B1005.04.000 Superstructure-Steel-CONNECTIONS-- \n",
"38 B1005.05.000 Superstructure-Steel-FRAMING AND BRACING-- \n",
"39 B1005.07.000 Superstructure-Steel-STEEL-DECK-- \n",
"40 B1008.00 Superstructure-Sump-GENERAL-- \n",
"41 B1009.01.000 Superstructure-Channel-Unistrut-CHANNEL MEMBER... \n",
"42 B1009.02.000 Superstructure-Channel-Unistrut-UNISTRUT RACKS-- \n",
"43 B1009.03.000 Superstructure-Channel-Unistrut-UNISTRUT CONNE... \n",
"44 B1010.04.000 Superstructure-Floor Construction-RAMP-- \n",
"45 B1010.06.000 Superstructure-Floor Construction-INCLINED & S... \n",
"46 B1010.07.000 Superstructure-Floor Construction-EXPANSION & ... \n",
"47 B1010.09.000 Superstructure-Floor Construction-CATWALKS-- \n",
"48 B1010.10.000 Superstructure-Floor Construction-SPACE FRAMES-- \n",
"49 B1011.00 Superstructure-Floor Opening-GENERAL-- \n",
"\n",
" Assembly Order Revit Code best_index best_similarity match_text \n",
"0 4 -2001300 3 1.0 A1001.00 \n",
"1 4 -2001300 9 1.0 A1007.00 \n",
"2 5 -2001309 14 1.0 A1010.02.000 \n",
"3 5 -2001300 16 1.0 A1010.03.000 \n",
"4 5 -2001300 18 1.0 A1010.04.000 \n",
"5 5 -2001300 20 1.0 A1010.05.000 \n",
"6 5 -2001300 22 1.0 A1010.06.000 \n",
"7 5 -2001300 24 1.0 A1010.07.000 \n",
"8 5 -2001300 26 1.0 A1010.08.000 \n",
"9 5 -2001300 28 1.0 A1010.09.000 \n",
"10 5 -2001300 30 1.0 A1010.10.000 \n",
"11 5 -2001300 32 1.0 A1010.11.000 \n",
"12 5 -2001300 36 1.0 A1016.01.000 \n",
"13 5 -2001300 38 1.0 A1016.02.000 \n",
"14 5 -2001300 40 1.0 A1016.03.000 \n",
"15 5 -2001300 42 1.0 A1016.04.000 \n",
"16 5 -2001300 44 1.0 A1016.05.000 \n",
"17 5 -2001300 46 1.0 A1016.06.000 \n",
"18 5 -2001300 48 1.0 A1016.07.000 \n",
"19 5 -2001300 52 1.0 A1020.01.000 \n",
"20 5 -2001300 54 1.0 A1020.02.000 \n",
"21 5 -2001300 56 1.0 A1020.03.000 \n",
"22 5 -2001300 58 1.0 A1020.04.000 \n",
"23 5 -2001300 60 1.0 A1020.05.000 \n",
"24 4 -2000151 74 1.0 A2010.01 \n",
"25 5 -2001330 87 1.0 A9000.01.000 \n",
"26 5 -2001320 89 1.0 A9000.02.000 \n",
"27 5 -2000151 91 1.0 A9000.03.000 \n",
"28 5 -2000151 95 1.0 A9000.06.000 \n",
"29 5 -2001330 100 1.0 B1000.01.000 \n",
"30 5 -2001320 102 1.0 B1000.02.000 \n",
"31 5 -2001330 109 1.0 B1002.01.000 \n",
"32 5 -2001320 111 1.0 B1002.02.000 \n",
"33 5 -2001320 114 1.0 B1002.04.000 \n",
"34 5 -2001330 118 1.0 B1005.01.000 \n",
"35 5 -2001320 120 1.0 B1005.02.000 \n",
"36 5 -2000151 122 1.0 B1005.03.000 \n",
"37 5 -2001320 124 1.0 B1005.04.000 \n",
"38 5 -2001320 126 1.0 B1005.05.000 \n",
"39 5 -2001320 129 1.0 B1005.07.000 \n",
"40 4 -2000151 131 1.0 B1008.00 \n",
"41 5 -2000151 135 1.0 B1009.01.000 \n",
"42 5 -2000151 137 1.0 B1009.02.000 \n",
"43 5 -2000151 139 1.0 B1009.03.000 \n",
"44 5 -2000151 146 1.0 B1010.04.000 \n",
"45 5 -2000151 149 1.0 B1010.06.000 \n",
"46 5 -2001320 151 1.0 B1010.07.000 \n",
"47 5 -2001320 154 1.0 B1010.09.000 \n",
"48 5 -2000151 156 1.0 B1010.10.000 \n",
"49 4 -2000151 158 1.0 B1011.00 "
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_uniformat_copy = df_uniformat.copy()\n",
"df_uniformat_copy['best_index'] = df_similiarity['best_index']\n",
"df_uniformat_copy['best_similarity'] = df_similiarity['best_similarity']\n",
"df_uniformat_copy['match_text'] = df_similiarity['match_text']\n",
"df_uniformat_copy.head(50)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Int64Index([0, 1, 2, 3], dtype='int64')"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_uniformat_hierarchy.columns"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A10</td>\n",
" <td>Foundations</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A1001</td>\n",
" <td>Foundation Accessories</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A1001.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A1002</td>\n",
" <td>Termite Barrier</td>\n",
" <td>3</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3\n",
"0 A Discipline 1 NaN\n",
"1 A10 Foundations 2 NaN\n",
"2 A1001 Foundation Accessories 3 NaN\n",
"3 A1001.00 General 4 -2001300\n",
"4 A1002 Termite Barrier 3 -2001300"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_uniformat_hierarchy.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A10</td>\n",
" <td>Foundations</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A1001</td>\n",
" <td>Foundation Accessories</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A1001.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A1002</td>\n",
" <td>Termite Barrier</td>\n",
" <td>3</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>A1002.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>A1003</td>\n",
" <td>Waterproofing</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>A1003.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>A1007</td>\n",
" <td>TieBeam</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>A1007.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>A1010</td>\n",
" <td>Standard Foundations</td>\n",
" <td>3</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>A1010.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>A1010.01</td>\n",
" <td>Foundation, General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>A1010.02</td>\n",
" <td>Foundation, Combined Footing</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>A1010.02.000</td>\n",
" <td>Foundations-Standard -COMBINED FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001309</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>A1010.03</td>\n",
" <td>Foundation, Isometric Footing</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>A1010.03.000</td>\n",
" <td>Foundations-Standard -ISOMETRIC FOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>A1010.04</td>\n",
" <td>Foundation, StripFooting</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>A1010.04.000</td>\n",
" <td>Foundations-Standard -STRIPFOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>A1010.05</td>\n",
" <td>Foundation, FoundationWall</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>A1010.05.000</td>\n",
" <td>Foundations-Standard -FOUNDATIONWALL--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>A1010.06</td>\n",
" <td>Foundation, PCFoundations</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>A1010.06.000</td>\n",
" <td>Foundations-Standard -PCFOUNDATIONS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>A1010.07</td>\n",
" <td>Foundation, SpreadFooting</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>A1010.07.000</td>\n",
" <td>Foundations-Standard -SPREADFOOTING--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>A1010.08</td>\n",
" <td>Foundation, Column Foundations Column Piers</td>\n",
" <td>4</td>\n",
" <td>-2001330</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>A1010.08.000</td>\n",
" <td>Foundations-Standard -COLUMN PIERS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>A1010.09</td>\n",
" <td>Raft Foundations</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>A1010.09.000</td>\n",
" <td>Foundations-Standard -RAFT FOUNDATIONS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>A1010.10</td>\n",
" <td>Pile Caps</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>A1010.10.000</td>\n",
" <td>Foundations-Standard -PILE CAPS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>A1010.11</td>\n",
" <td>Grade Beams</td>\n",
" <td>4</td>\n",
" <td>-2001327</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>A1010.11.000</td>\n",
" <td>Foundations-Standard -GRADE BEAMS--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>A1016</td>\n",
" <td>Piling, General</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>A1016.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>A1016.01</td>\n",
" <td>Piling, Grid Pile</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>A1016.01.000</td>\n",
" <td>Foundations-Piling-GRID PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>A1016.02</td>\n",
" <td>Piling, Caisson Pile</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>A1016.02.000</td>\n",
" <td>Foundations-Piling-CAISSON PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>A1016.03</td>\n",
" <td>Piling, Barrette Pile</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>A1016.03.000</td>\n",
" <td>Foundations-Piling-BARRETTE PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>A1016.04</td>\n",
" <td>Piling, Secant Pile</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>A1016.04.000</td>\n",
" <td>Foundations-Piling-SECANT PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>A1016.05</td>\n",
" <td>Piling, Driven Piles</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>A1016.05.000</td>\n",
" <td>Foundations-Piling-DRIVEN PILES--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>A1016.06</td>\n",
" <td>Piling, Bored Pile</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>A1016.06.000</td>\n",
" <td>Foundations-Piling-BORED PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>A1016.07</td>\n",
" <td>Piling, Micro Pile</td>\n",
" <td>4</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>A1016.07.000</td>\n",
" <td>Foundations-Piling-MICRO PILE--</td>\n",
" <td>5</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>A1020</td>\n",
" <td>Special Foundations</td>\n",
" <td>3</td>\n",
" <td>-2001300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3\n",
"0 A Discipline 1 NaN\n",
"1 A10 Foundations 2 NaN\n",
"2 A1001 Foundation Accessories 3 NaN\n",
"3 A1001.00 General 4 -2001300\n",
"4 A1002 Termite Barrier 3 -2001300\n",
"5 A1002.00 General 4 -2001300\n",
"6 A1003 Waterproofing 3 NaN\n",
"7 A1003.00 General 4 -2001300\n",
"8 A1007 TieBeam 3 NaN\n",
"9 A1007.00 General 4 -2001300\n",
"10 A1010 Standard Foundations 3 -2001300\n",
"11 A1010.00 General 4 -2001300\n",
"12 A1010.01 Foundation, General 4 -2001300\n",
"13 A1010.02 Foundation, Combined Footing 4 -2001300\n",
"14 A1010.02.000 Foundations-Standard -COMBINED FOOTING-- 5 -2001309\n",
"15 A1010.03 Foundation, Isometric Footing 4 -2001300\n",
"16 A1010.03.000 Foundations-Standard -ISOMETRIC FOOTING-- 5 -2001300\n",
"17 A1010.04 Foundation, StripFooting 4 -2001300\n",
"18 A1010.04.000 Foundations-Standard -STRIPFOOTING-- 5 -2001300\n",
"19 A1010.05 Foundation, FoundationWall 4 -2001300\n",
"20 A1010.05.000 Foundations-Standard -FOUNDATIONWALL-- 5 -2001300\n",
"21 A1010.06 Foundation, PCFoundations 4 -2001300\n",
"22 A1010.06.000 Foundations-Standard -PCFOUNDATIONS-- 5 -2001300\n",
"23 A1010.07 Foundation, SpreadFooting 4 -2001300\n",
"24 A1010.07.000 Foundations-Standard -SPREADFOOTING-- 5 -2001300\n",
"25 A1010.08 Foundation, Column Foundations Column Piers 4 -2001330\n",
"26 A1010.08.000 Foundations-Standard -COLUMN PIERS-- 5 -2001300\n",
"27 A1010.09 Raft Foundations 4 -2001300\n",
"28 A1010.09.000 Foundations-Standard -RAFT FOUNDATIONS-- 5 -2001300\n",
"29 A1010.10 Pile Caps 4 -2001300\n",
"30 A1010.10.000 Foundations-Standard -PILE CAPS-- 5 -2001300\n",
"31 A1010.11 Grade Beams 4 -2001327\n",
"32 A1010.11.000 Foundations-Standard -GRADE BEAMS-- 5 -2001300\n",
"33 A1016 Piling, General 3 NaN\n",
"34 A1016.00 General 4 -2001300\n",
"35 A1016.01 Piling, Grid Pile 4 -2001300\n",
"36 A1016.01.000 Foundations-Piling-GRID PILE-- 5 -2001300\n",
"37 A1016.02 Piling, Caisson Pile 4 -2001300\n",
"38 A1016.02.000 Foundations-Piling-CAISSON PILE-- 5 -2001300\n",
"39 A1016.03 Piling, Barrette Pile 4 -2001300\n",
"40 A1016.03.000 Foundations-Piling-BARRETTE PILE-- 5 -2001300\n",
"41 A1016.04 Piling, Secant Pile 4 -2001300\n",
"42 A1016.04.000 Foundations-Piling-SECANT PILE-- 5 -2001300\n",
"43 A1016.05 Piling, Driven Piles 4 -2001300\n",
"44 A1016.05.000 Foundations-Piling-DRIVEN PILES-- 5 -2001300\n",
"45 A1016.06 Piling, Bored Pile 4 -2001300\n",
"46 A1016.06.000 Foundations-Piling-BORED PILE-- 5 -2001300\n",
"47 A1016.07 Piling, Micro Pile 4 -2001300\n",
"48 A1016.07.000 Foundations-Piling-MICRO PILE-- 5 -2001300\n",
"49 A1020 Special Foundations 3 -2001300"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_uniformat_hierarchy_copy = df_uniformat_hierarchy.copy()\n",
"\n",
"for i in range(len(df_uniformat_copy)):\n",
" index_to_append = df_uniformat_copy['best_index'][i] + 1\n",
" \n",
" if index_to_append != 0:\n",
" # Get data of the first 4 columns from df_uniformat_copy\n",
" A = df_uniformat_copy.iloc[i,0]\n",
" B = df_uniformat_copy.iloc[i,1]\n",
" C = df_uniformat_copy.iloc[i,2]\n",
" D = df_uniformat_copy.iloc[i,3]\n",
" # Create a new DataFrame with the row to insert\n",
" new_row = pd.DataFrame([[A, B, C, D]], columns=df_uniformat_hierarchy_copy.columns)\n",
" # this one skip process if Assembly Code Match = 1\n",
" if(A in df_uniformat_hierarchy_copy[0].values): \n",
" # replace if Column RevitCode is not empty\n",
" if(D != 'nan'):\n",
" df_uniformat_hierarchy_copy.loc[df_uniformat_hierarchy_copy[0] == A, 3] = D\n",
" else:\n",
" df_uniformat_hierarchy_copy = pd.concat([df_uniformat_hierarchy_copy.iloc[:index_to_append], new_row, df_uniformat_hierarchy_copy.iloc[index_to_append:]]).reset_index(drop=True)\n",
"\n",
"# df_uniformat_hierarchy_copy.reset_index(drop=True, inplace=True)\n",
"df_uniformat_hierarchy_copy.head(20)\n",
"# soft by first column\n",
"df_uniformat_hierarchy_copy.sort_values(by=[0], inplace=True)\n",
"\n",
"df_uniformat_hierarchy_copy.drop_duplicates(inplace=True)\n",
"df_uniformat_hierarchy_copy.head(50)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2967</th>\n",
" <td>K1030.03</td>\n",
" <td>Air Shower</td>\n",
" <td>4</td>\n",
" <td>-2001160</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2968</th>\n",
" <td>K1030.03.000</td>\n",
" <td>Cleanroom-Clearnroom Arch-AIR SHOWER--</td>\n",
" <td>5</td>\n",
" <td>-2001160</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2969</th>\n",
" <td>K1041</td>\n",
" <td>AMHS</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2970</th>\n",
" <td>K1041.00</td>\n",
" <td>General</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2971</th>\n",
" <td>K1041.01</td>\n",
" <td>AMHS Support</td>\n",
" <td>4</td>\n",
" <td>-2000151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2972</th>\n",
" <td>M</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2973</th>\n",
" <td>P/M</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2974</th>\n",
" <td>R</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2975</th>\n",
" <td>S</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2976</th>\n",
" <td>XDIS</td>\n",
" <td>Discipline</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3\n",
"2967 K1030.03 Air Shower 4 -2001160\n",
"2968 K1030.03.000 Cleanroom-Clearnroom Arch-AIR SHOWER-- 5 -2001160\n",
"2969 K1041 AMHS 3 NaN\n",
"2970 K1041.00 General 4 NaN\n",
"2971 K1041.01 AMHS Support 4 -2000151\n",
"2972 M Discipline 1 NaN\n",
"2973 P/M Discipline 1 NaN\n",
"2974 R Discipline 1 NaN\n",
"2975 S Discipline 1 NaN\n",
"2976 XDIS Discipline 1 NaN"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_uniformat_hierarchy_copy.tail(10)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"# create a backup \n",
"df_uniformat_hierarchy_copy.to_csv(r'backup/exyte_UniformatClassifications_2024_backup.txt', sep='\\t', index=False, header=False)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"# save txt with tab delimited, this one also overide with old one\n",
"df_uniformat_hierarchy_copy.to_csv(r'exyte_UniformatClassifications_2024.txt', sep='\\t', index=False, header=False)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment