890 строки
28 KiB
Plaintext
890 строки
28 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Updating ../counters/C00008.md\n",
|
||
"Updating ../counters/C00009.md\n",
|
||
"Updating ../counters/C00011.md\n",
|
||
"Updating ../counters/C00012.md\n",
|
||
"Updating ../counters/C00014.md\n",
|
||
"Updating ../counters/C00016.md\n",
|
||
"Updating ../counters/C00020.md\n",
|
||
"Updating ../counters/C00022.md\n",
|
||
"Updating ../counters/C00023.md\n",
|
||
"Updating ../counters/C00024.md\n",
|
||
"Updating ../counters/C00025.md\n",
|
||
"Updating ../counters/C00026.md\n",
|
||
"Updating ../counters/C00027.md\n",
|
||
"Updating ../counters/C00031.md\n",
|
||
"Updating ../counters/C00036.md\n",
|
||
"Updating ../counters/C00039.md\n",
|
||
"Updating ../counters/C00040.md\n",
|
||
"Updating ../counters/C00042.md\n",
|
||
"Updating ../counters/C00043.md\n",
|
||
"Updating ../counters/C00044.md\n",
|
||
"Updating ../counters/C00045.md\n",
|
||
"Updating ../counters/C00048.md\n",
|
||
"Updating ../counters/C00049.md\n",
|
||
"Updating ../counters/C00050.md\n",
|
||
"Updating ../counters/C00051.md\n",
|
||
"Updating ../counters/C00052.md\n",
|
||
"Updating ../counters/C00053.md\n",
|
||
"Updating ../counters/C00055.md\n",
|
||
"Updating ../counters/C00060.md\n",
|
||
"Updating ../counters/C00063.md\n",
|
||
"Updating ../counters/C00065.md\n",
|
||
"Updating ../counters/C00066.md\n",
|
||
"Updating ../counters/C00067.md\n",
|
||
"Updating ../counters/C00068.md\n",
|
||
"Updating ../counters/C00069.md\n",
|
||
"Updating ../counters/C00070.md\n",
|
||
"Updating ../counters/C00071.md\n",
|
||
"Updating ../counters/C00072.md\n",
|
||
"Updating ../counters/C00073.md\n",
|
||
"Updating ../counters/C00074.md\n",
|
||
"Updating ../counters/C00076.md\n",
|
||
"Updating ../counters/C00078.md\n",
|
||
"Updating ../counters/C00079.md\n",
|
||
"Updating ../counters/C00088.md\n",
|
||
"Updating ../counters/C00089.md\n",
|
||
"Updating ../counters/C00090.md\n",
|
||
"Updating ../counters/C00091.md\n",
|
||
"Updating ../counters/C00092.md\n",
|
||
"Updating ../counters/C00093.md\n",
|
||
"Updating ../counters/C00094.md\n",
|
||
"Updating ../counters/C00095.md\n",
|
||
"Updating ../counters/C00096.md\n",
|
||
"Updating ../counters/C00097.md\n",
|
||
"Updating ../counters/C00098.md\n",
|
||
"Updating ../counters/C00099.md\n",
|
||
"Updating ../counters/C00101.md\n",
|
||
"Updating ../counters/C00102.md\n",
|
||
"Updating ../counters/C00103.md\n",
|
||
"Updating ../counters/C00107.md\n",
|
||
"Updating ../counters/C00112.md\n",
|
||
"Updating ../counters/C00113.md\n",
|
||
"Updating ../counters/C00114.md\n",
|
||
"Updating ../counters/C00115.md\n",
|
||
"Updating ../counters/C00116.md\n",
|
||
"Updating ../counters/C00117.md\n",
|
||
"Updating ../counters/C00118.md\n",
|
||
"Updating ../counters/C00119.md\n",
|
||
"Updating ../counters/C00120.md\n",
|
||
"Updating ../counters/C00121.md\n",
|
||
"Updating ../counters/C00123.md\n",
|
||
"Updating ../counters/C00126.md\n",
|
||
"Updating ../counters/C00129.md\n",
|
||
"Updating ../counters/C00131.md\n",
|
||
"Updating ../counters/C00133.md\n",
|
||
"Updating ../counters/C00135.md\n",
|
||
"Updating ../counters/C00136.md\n",
|
||
"Updating ../counters/C00137.md\n",
|
||
"Updating ../counters/C00144.md\n",
|
||
"Updating ../counters/C00145.md\n",
|
||
"Updating ../counters/C00147.md\n",
|
||
"Updating ../counters/C00149.md\n",
|
||
"Updating ../counters/C00202.md\n",
|
||
"Updating ../counters/C00210.md\n",
|
||
"updated ../incidents_list.md\n",
|
||
"updated ../amitt_red_framework.md\n",
|
||
"updated ../amitt_red_framework_clickable.html\n",
|
||
"Writing ../counter_tactics/TA01counters.md\n",
|
||
"Writing ../counter_tactics/TA02counters.md\n",
|
||
"Writing ../counter_tactics/TA03counters.md\n",
|
||
"Writing ../counter_tactics/TA04counters.md\n",
|
||
"Writing ../counter_tactics/TA05counters.md\n",
|
||
"Writing ../counter_tactics/TA06counters.md\n",
|
||
"Writing ../counter_tactics/TA07counters.md\n",
|
||
"Writing ../counter_tactics/TA08counters.md\n",
|
||
"Writing ../counter_tactics/TA09counters.md\n",
|
||
"Writing ../counter_tactics/TA10counters.md\n",
|
||
"Writing ../counter_tactics/TA11counters.md\n",
|
||
"Writing ../counter_tactics/TA12counters.md\n",
|
||
"updated ../tactics_by_responsetype_table.md\n",
|
||
"Writing metatechniques/cleaningcounters.md\n",
|
||
"Writing metatechniques/countermessagingcounters.md\n",
|
||
"Writing metatechniques/data pollutioncounters.md\n",
|
||
"Writing metatechniques/daylightcounters.md\n",
|
||
"Writing metatechniques/dilutioncounters.md\n",
|
||
"Writing metatechniques/diversioncounters.md\n",
|
||
"Writing metatechniques/frictioncounters.md\n",
|
||
"Writing metatechniques/metatechniquecounters.md\n",
|
||
"Writing metatechniques/reduce resourcescounters.md\n",
|
||
"Writing metatechniques/removalcounters.md\n",
|
||
"Writing metatechniques/resiliencecounters.md\n",
|
||
"Writing metatechniques/scoringcounters.md\n",
|
||
"Writing metatechniques/targetingcounters.md\n",
|
||
"Writing metatechniques/verificationcounters.md\n",
|
||
"updated ../metatechniques_by_responsetype_table.md\n",
|
||
"Writing ../resources_needed/DHScounters.md\n",
|
||
"Writing ../resources_needed/NGOcounters.md\n",
|
||
"Writing ../resources_needed/activistscounters.md\n",
|
||
"Writing ../resources_needed/adtechcounters.md\n",
|
||
"Writing ../resources_needed/civil_societycounters.md\n",
|
||
"Writing ../resources_needed/community_groupscounters.md\n",
|
||
"Writing ../resources_needed/companiescounters.md\n",
|
||
"Writing ../resources_needed/content_creatorscounters.md\n",
|
||
"Writing ../resources_needed/data_scientistcounters.md\n",
|
||
"Writing ../resources_needed/datastreamscounters.md\n",
|
||
"Writing ../resources_needed/developerscounters.md\n",
|
||
"Writing ../resources_needed/educatorscounters.md\n",
|
||
"Writing ../resources_needed/elvescounters.md\n",
|
||
"Writing ../resources_needed/factcheckerscounters.md\n",
|
||
"Writing ../resources_needed/fundingcounters.md\n",
|
||
"Writing ../resources_needed/gamesdesignerscounters.md\n",
|
||
"Writing ../resources_needed/governmentcounters.md\n",
|
||
"Writing ../resources_needed/government:policymakerscounters.md\n",
|
||
"Writing ../resources_needed/influencerscounters.md\n",
|
||
"Writing ../resources_needed/influencers:trusted_authoritycounters.md\n",
|
||
"Writing ../resources_needed/infoseccounters.md\n",
|
||
"Writing ../resources_needed/librariescounters.md\n",
|
||
"Writing ../resources_needed/mediacounters.md\n",
|
||
"Writing ../resources_needed/militarycounters.md\n",
|
||
"Writing ../resources_needed/moneycounters.md\n",
|
||
"Writing ../resources_needed/platform_admincounters.md\n",
|
||
"Writing ../resources_needed/platform_admin:adtechcounters.md\n",
|
||
"Writing ../resources_needed/platform_admin:fundingsitescounters.md\n",
|
||
"Writing ../resources_needed/platform_admin:socialmediacounters.md\n",
|
||
"Writing ../resources_needed/platform_algorithmscounters.md\n",
|
||
"Writing ../resources_needed/platform_outreachcounters.md\n",
|
||
"Writing ../resources_needed/platformscounters.md\n",
|
||
"Writing ../resources_needed/publiccounters.md\n",
|
||
"Writing ../resources_needed/public:account_ownerscounters.md\n",
|
||
"Writing ../resources_needed/religious_organisationscounters.md\n",
|
||
"Writing ../resources_needed/schoolscounters.md\n",
|
||
"Writing ../resources_needed/server_admincounters.md\n",
|
||
"updated ../resources_by_responsetype_table.md\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from generate_amitt_ttps import Amitt\n",
|
||
"amitt = Amitt()\n",
|
||
"amitt.generate_and_write_datafiles()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"vars(amitt)['tactics']"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"vars(amitt).keys()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"###. TEST AREA"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def create_tactic_counters_string(tactic_id):\n",
|
||
" table_string = '''\n",
|
||
"| Response types | Counters |\n",
|
||
"| -------------- | -------- |\n",
|
||
"'''\n",
|
||
" tactic_counters = amitt.df_counters[amitt.df_counters['tactic_id']==tactic_id]\n",
|
||
" row_string = '| {0} | [{1} {2}](../counters/{1}.md) |\\n'\n",
|
||
" for index, row in tactic_counters.sort_values(['responsetype', 'id']).iterrows():\n",
|
||
" table_string += row_string.format(row['responsetype'], row['id'], row['name'])\n",
|
||
" return table_string\n",
|
||
"\n",
|
||
"\n",
|
||
"def create_technique_counters_string(technique_id):\n",
|
||
" table_string = '''\n",
|
||
"| Counters |\n",
|
||
"| -------- |\n",
|
||
"'''\n",
|
||
" technique_counters = amitt.cross_counterid_techniqueid[amitt.cross_counterid_techniqueid['technique_id']==technique_id]\n",
|
||
" technique_counters = pd.merge(technique_counters, amitt.df_counters[['id', 'name']])\n",
|
||
" row_string = '| [{0} {1}](../counters/{0}.md) |\\n'\n",
|
||
" for index, row in technique_counters.sort_values('id').iterrows():\n",
|
||
" table_string += row_string.format(row['id'], row['name'])\n",
|
||
" return table_string\n",
|
||
"\n",
|
||
"create_technique_counters_string('TA01')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"amitt.df_counters"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"amitt.cross_counterid_techniqueid[amitt.cross_counterid_techniqueid['technique_id'] == 'T0006']"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"amitt.cross_counterid_techniqueid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"technique_id='T0006'\n",
|
||
"xx = amitt.cross_counterid_techniqueid[amitt.cross_counterid_techniqueid['technique_id']==technique_id]\n",
|
||
"pd.merge(xx, amitt.df_counters[['id', 'name']])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"tactics=self.create_counter_tactics_string(row['id'])\n",
|
||
"techniques=self.create_counter_techniques_string(row['id'])\n",
|
||
"incidents=self.create_counter_incidents_string(row['id'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"pd.pivot_table(amitt.df_counters[['tactic_id', 'responsetype','id']], index='responsetype', columns='tactic_id', aggfunc=len, fill_value=0)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"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>id</th>\n",
|
||
" <th>technique_id</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>C00008</td>\n",
|
||
" <td>TA01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>C00008</td>\n",
|
||
" <td>TA06</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>C00008</td>\n",
|
||
" <td>TA08</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>C00008</td>\n",
|
||
" <td>T0006</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>C00008</td>\n",
|
||
" <td>T0009</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>182</th>\n",
|
||
" <td>C00145</td>\n",
|
||
" <td>T0015</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>182</th>\n",
|
||
" <td>C00145</td>\n",
|
||
" <td>T0046</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>183</th>\n",
|
||
" <td>C00147</td>\n",
|
||
" <td>T0060</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>185</th>\n",
|
||
" <td>C00149</td>\n",
|
||
" <td>TA12</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>185</th>\n",
|
||
" <td>C00149</td>\n",
|
||
" <td>T0020</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>283 rows × 2 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id technique_id\n",
|
||
"6 C00008 TA01\n",
|
||
"6 C00008 TA06\n",
|
||
"6 C00008 TA08\n",
|
||
"6 C00008 T0006\n",
|
||
"6 C00008 T0009\n",
|
||
".. ... ...\n",
|
||
"182 C00145 T0015\n",
|
||
"182 C00145 T0046\n",
|
||
"183 C00147 T0060\n",
|
||
"185 C00149 TA12\n",
|
||
"185 C00149 T0020\n",
|
||
"\n",
|
||
"[283 rows x 2 columns]"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"amitt.cross_counterid_techniqueid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'\\n| Counters these Techniques |\\n| ------------------------- |\\n| [C00145 Create hashtag](../techniques/C00145.md) |\\n| [C00145 Search Engine Optimization](../techniques/C00145.md) |\\n'"
|
||
]
|
||
},
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"counter_id = 'C00145'\n",
|
||
"table_string = '''\n",
|
||
"| Counters these Techniques |\n",
|
||
"| ------------------------- |\n",
|
||
"'''\n",
|
||
"counter_techniques = amitt.cross_counterid_techniqueid[amitt.cross_counterid_techniqueid['id']==counter_id]\n",
|
||
"counter_techniques = pd.merge(counter_techniques, amitt.df_techniques[['id', 'name']].rename(columns={'id': 'technique_id'}))\n",
|
||
"row_string = '| [{0} {1}](../techniques/{0}.md) |\\n'\n",
|
||
"for index, row in counter_techniques.sort_values('id').iterrows():\n",
|
||
" table_string += row_string.format(row['id'], row['name'])\n",
|
||
"\n",
|
||
"table_string"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"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>id</th>\n",
|
||
" <th>technique_id</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>182</th>\n",
|
||
" <td>C00145</td>\n",
|
||
" <td>T0015</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>182</th>\n",
|
||
" <td>C00145</td>\n",
|
||
" <td>T0046</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id technique_id\n",
|
||
"182 C00145 T0015\n",
|
||
"182 C00145 T0046"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"counter_techniques = amitt.cross_counterid_techniqueid[amitt.cross_counterid_techniqueid['id']==counter_id]\n",
|
||
"\n",
|
||
"counter_techniques"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"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>id</th>\n",
|
||
" <th>name</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>T0001</td>\n",
|
||
" <td>5Ds (dismiss, distort, distract, dismay, divide)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>T0002</td>\n",
|
||
" <td>Facilitate State Propaganda</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>T0003</td>\n",
|
||
" <td>Leverage Existing Narratives</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>T0004</td>\n",
|
||
" <td>Competing Narratives</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>T0005</td>\n",
|
||
" <td>Center of Gravity Analysis</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>56</th>\n",
|
||
" <td>T0057</td>\n",
|
||
" <td>Organise remote rallies and events</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>57</th>\n",
|
||
" <td>T0058</td>\n",
|
||
" <td>Legacy web content</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>58</th>\n",
|
||
" <td>T0059</td>\n",
|
||
" <td>Play the long game</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>59</th>\n",
|
||
" <td>T0060</td>\n",
|
||
" <td>Continue to amplify</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>60</th>\n",
|
||
" <td>T0061</td>\n",
|
||
" <td>Sell merchandising</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>61 rows × 2 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id name\n",
|
||
"0 T0001 5Ds (dismiss, distort, distract, dismay, divide)\n",
|
||
"1 T0002 Facilitate State Propaganda\n",
|
||
"2 T0003 Leverage Existing Narratives\n",
|
||
"3 T0004 Competing Narratives\n",
|
||
"4 T0005 Center of Gravity Analysis\n",
|
||
".. ... ...\n",
|
||
"56 T0057 Organise remote rallies and events\n",
|
||
"57 T0058 Legacy web content\n",
|
||
"58 T0059 Play the long game\n",
|
||
"59 T0060 Continue to amplify\n",
|
||
"60 T0061 Sell merchandising\n",
|
||
"\n",
|
||
"[61 rows x 2 columns]"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"amitt.df_techniques[['id', 'name']]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"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>id</th>\n",
|
||
" <th>technique_id</th>\n",
|
||
" <th>name</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>C00145</td>\n",
|
||
" <td>T0015</td>\n",
|
||
" <td>Create hashtag</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>C00145</td>\n",
|
||
" <td>T0046</td>\n",
|
||
" <td>Search Engine Optimization</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id technique_id name\n",
|
||
"0 C00145 T0015 Create hashtag\n",
|
||
"1 C00145 T0046 Search Engine Optimization"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd.merge(counter_techniques, amitt.df_techniques[['id', 'name']].rename(columns={'id': 'technique_id'}))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"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>technique_id</th>\n",
|
||
" <th>name</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>T0001</td>\n",
|
||
" <td>5Ds (dismiss, distort, distract, dismay, divide)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>T0002</td>\n",
|
||
" <td>Facilitate State Propaganda</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>T0003</td>\n",
|
||
" <td>Leverage Existing Narratives</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>T0004</td>\n",
|
||
" <td>Competing Narratives</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>T0005</td>\n",
|
||
" <td>Center of Gravity Analysis</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>56</th>\n",
|
||
" <td>T0057</td>\n",
|
||
" <td>Organise remote rallies and events</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>57</th>\n",
|
||
" <td>T0058</td>\n",
|
||
" <td>Legacy web content</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>58</th>\n",
|
||
" <td>T0059</td>\n",
|
||
" <td>Play the long game</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>59</th>\n",
|
||
" <td>T0060</td>\n",
|
||
" <td>Continue to amplify</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>60</th>\n",
|
||
" <td>T0061</td>\n",
|
||
" <td>Sell merchandising</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>61 rows × 2 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" technique_id name\n",
|
||
"0 T0001 5Ds (dismiss, distort, distract, dismay, divide)\n",
|
||
"1 T0002 Facilitate State Propaganda\n",
|
||
"2 T0003 Leverage Existing Narratives\n",
|
||
"3 T0004 Competing Narratives\n",
|
||
"4 T0005 Center of Gravity Analysis\n",
|
||
".. ... ...\n",
|
||
"56 T0057 Organise remote rallies and events\n",
|
||
"57 T0058 Legacy web content\n",
|
||
"58 T0059 Play the long game\n",
|
||
"59 T0060 Continue to amplify\n",
|
||
"60 T0061 Sell merchandising\n",
|
||
"\n",
|
||
"[61 rows x 2 columns]"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"amitt.df_techniques[['id', 'name']].rename(columns={'id': 'technique_id'})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"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>id</th>\n",
|
||
" <th>name</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>14</th>\n",
|
||
" <td>T0015</td>\n",
|
||
" <td>Create hashtag</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id name\n",
|
||
"14 T0015 Create hashtag"
|
||
]
|
||
},
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"amitt.df_techniques[amitt.df_techniques['id'] == 'T0015'][['id', 'name']]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"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.8.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|