AMITT/HTML_GENERATING_CODE/test_new_code.ipynb
2021-02-19 08:00:20 +00:00

890 строки
28 KiB
Plaintext
Исходник Ответственный История

Этот файл содержит неоднозначные символы Юникода

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}