1861 строка
		
	
	
		
			85 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1861 строка
		
	
	
		
			85 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| {
 | ||
|  "cells": [
 | ||
|   {
 | ||
|    "cell_type": "markdown",
 | ||
|    "metadata": {},
 | ||
|    "source": [
 | ||
|     "# Create counters summaries\n",
 | ||
|     "Create summaries of disinfo countermeasures for use in dataset cleaning etc."
 | ||
|    ]
 | ||
|   },
 | ||
|   {
 | ||
|    "cell_type": "code",
 | ||
|    "execution_count": 1,
 | ||
|    "metadata": {},
 | ||
|    "outputs": [
 | ||
|     {
 | ||
|      "name": "stdout",
 | ||
|      "output_type": "stream",
 | ||
|      "text": [
 | ||
|       "Writing ../tactics/ALcounters.md\n",
 | ||
|       "Writing ../tactics/TA01counters.md\n",
 | ||
|       "Writing ../tactics/TA02counters.md\n",
 | ||
|       "Writing ../tactics/TA03counters.md\n",
 | ||
|       "Writing ../tactics/TA04counters.md\n",
 | ||
|       "Writing ../tactics/TA05counters.md\n",
 | ||
|       "Writing ../tactics/TA06counters.md\n",
 | ||
|       "Writing ../tactics/TA07counters.md\n",
 | ||
|       "Writing ../tactics/TA08counters.md\n",
 | ||
|       "Writing ../tactics/TA09counters.md\n",
 | ||
|       "Writing ../tactics/TA09counters.md\n",
 | ||
|       "Writing ../tactics/TA10counters.md\n",
 | ||
|       "Writing ../tactics/TA11counters.md\n",
 | ||
|       "Writing ../tactics/TA12counters.md\n",
 | ||
|       "updated ../tactic_counts.md\n",
 | ||
|       "Writing ../metatag/cleaningcounters.md\n",
 | ||
|       "Writing ../metatag/countermessagingcounters.md\n",
 | ||
|       "Writing ../metatag/data pollutioncounters.md\n",
 | ||
|       "Writing ../metatag/daylightcounters.md\n",
 | ||
|       "Writing ../metatag/dilutioncounters.md\n",
 | ||
|       "Writing ../metatag/diversioncounters.md\n",
 | ||
|       "Writing ../metatag/frictioncounters.md\n",
 | ||
|       "Writing ../metatag/metatechniquecounters.md\n",
 | ||
|       "Writing ../metatag/reduce resourcescounters.md\n",
 | ||
|       "Writing ../metatag/removalcounters.md\n",
 | ||
|       "Writing ../metatag/resiliencecounters.md\n",
 | ||
|       "Writing ../metatag/scoringcounters.md\n",
 | ||
|       "Writing ../metatag/targetingcounters.md\n",
 | ||
|       "Writing ../metatag/verificationcounters.md\n",
 | ||
|       "updated ../metatag_counts.md\n"
 | ||
|      ]
 | ||
|     },
 | ||
|     {
 | ||
|      "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>metatechnique</th>\n",
 | ||
|        "      <th>Title</th>\n",
 | ||
|        "      <th>Details</th>\n",
 | ||
|        "      <th>Playbook(s)</th>\n",
 | ||
|        "      <th>Resources needed</th>\n",
 | ||
|        "      <th>How found</th>\n",
 | ||
|        "      <th>References</th>\n",
 | ||
|        "      <th>Incidents</th>\n",
 | ||
|        "      <th>Tactic</th>\n",
 | ||
|        "      <th>Response</th>\n",
 | ||
|        "      <th>Techniques</th>\n",
 | ||
|        "      <th>NOTES</th>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "  </thead>\n",
 | ||
|        "  <tbody>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>0</th>\n",
 | ||
|        "      <td>C00043</td>\n",
 | ||
|        "      <td>cleaning</td>\n",
 | ||
|        "      <td>Detect hijacked accounts and reallocate them</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>In all playbooks the platform must force user ...</td>\n",
 | ||
|        "      <td>platform_admin,activists,civil_society,money</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0011 - Hijack accounts</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>1</th>\n",
 | ||
|        "      <td>C00053</td>\n",
 | ||
|        "      <td>cleaning</td>\n",
 | ||
|        "      <td>Delete old accounts / Remove unused social med...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>Social media companies remove inactive account...</td>\n",
 | ||
|        "      <td>platform_admin,platform_admin:socialmedia,publ...</td>\n",
 | ||
|        "      <td>2019-11-workshop,2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00004</td>\n",
 | ||
|        "      <td>TA04 Develop Networks</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>T0011 - Hijack accounts\\nTA06 - Develop Conten...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>2</th>\n",
 | ||
|        "      <td>C00074</td>\n",
 | ||
|        "      <td>cleaning</td>\n",
 | ||
|        "      <td>Identify identical content and mass deplatform</td>\n",
 | ||
|        "      <td>\\n</td>\n",
 | ||
|        "      <td>In all cases some checks need to prevent depla...</td>\n",
 | ||
|        "      <td>platform_admin,platform_admin:socialmedia</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T0022 - Conspiracy narratives\\nT0026 - Create ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>3</th>\n",
 | ||
|        "      <td>C00026</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Shore up democracy based messages (peace, free...</td>\n",
 | ||
|        "      <td>Unsure</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>T0002 - Facilitate State Propaganda</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>4</th>\n",
 | ||
|        "      <td>C00082</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Ground truthing as automated response to pollu...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>5</th>\n",
 | ||
|        "      <td>C00136</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Microtarget most likely targets then send them...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>Playbook 1: Work with platform to identify act...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA11 Persistence</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>TA08 - Pump Priming\\nTA09 - Exposure\\nTA10 - G...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>6</th>\n",
 | ||
|        "      <td>C00169</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>develop a creative content hub</td>\n",
 | ||
|        "      <td>international donors will donate to a basket f...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 - Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>7</th>\n",
 | ||
|        "      <td>C00211</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Use humorous counter-narratives</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00004</td>\n",
 | ||
|        "      <td>TA09 - Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>8</th>\n",
 | ||
|        "      <td>C00137</td>\n",
 | ||
|        "      <td>data pollution</td>\n",
 | ||
|        "      <td>Pollute the AB-testing data feeds</td>\n",
 | ||
|        "      <td>Polluting A/B testing requires knowledge of MO...</td>\n",
 | ||
|        "      <td>Playbook 1: Promote damp squibs.  Within a kno...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA11 Persistence</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0020 - Trial content</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>9</th>\n",
 | ||
|        "      <td>C00140</td>\n",
 | ||
|        "      <td>data pollution</td>\n",
 | ||
|        "      <td>\"Bomb\" link shorteners with lots of calls</td>\n",
 | ||
|        "      <td>Applies to most of the content used by exposur...</td>\n",
 | ||
|        "      <td>Playbook 1: DDoS adversary link shorteners by ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA11 Persistence</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>TA05 - Microtargeting\\nTA09 - Exposure*\\nTA10 ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>10</th>\n",
 | ||
|        "      <td>C00145</td>\n",
 | ||
|        "      <td>data pollution</td>\n",
 | ||
|        "      <td>Pollute the data voids with wholesome content ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA11 Persistence</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>T0015 - Create hashtag\\nT0046 - Search Engine ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>11</th>\n",
 | ||
|        "      <td>C00148</td>\n",
 | ||
|        "      <td>data pollution</td>\n",
 | ||
|        "      <td>Add random links to network graphs</td>\n",
 | ||
|        "      <td>If creators are using network analysis to dete...</td>\n",
 | ||
|        "      <td>Playbook 1: Degrade TA engagement using bots; ...</td>\n",
 | ||
|        "      <td>platform_algorithms</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA12 Measure Effectiveness</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>12</th>\n",
 | ||
|        "      <td>C00149</td>\n",
 | ||
|        "      <td>data pollution</td>\n",
 | ||
|        "      <td>Poison the monitoring & evaluation data</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>Playbook 1: Distort TA demographics by posting...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA12 Measure Effectiveness</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>TA12 - Measure Effectiveness\\nT0020 - Trial co...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>13</th>\n",
 | ||
|        "      <td>C00018</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Promote constructive communication by shaming ...</td>\n",
 | ||
|        "      <td>Duplicate of \"Promote playbooks to call out di...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>TA08 - Pump Priming\\nTA09 - Exposure\\nTA10 - G...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>14</th>\n",
 | ||
|        "      <td>C00019</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Promote playbooks to call out division-enablers</td>\n",
 | ||
|        "      <td>Duplicate of \"Promote constructive communicati...</td>\n",
 | ||
|        "      <td>Spread Infographics & Training Material teachi...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>TA08 - Pump Priming\\nTA09 - Exposure\\nTA10 - G...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>15</th>\n",
 | ||
|        "      <td>C00048</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Name and Shame</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>Identify the accounts, the real person's name ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D7 Deter</td>\n",
 | ||
|        "      <td>TA08 - Pump Priming\\nT0048 - Cow online opinio...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>16</th>\n",
 | ||
|        "      <td>C00068</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Expose online funding as fake</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA05 Microtargeting</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0017 - Promote online funding\\nT0061 - Sell m...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>17</th>\n",
 | ||
|        "      <td>C00069</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Mark clickbait visually</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA05 Microtargeting</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0016 - Clickbait</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>18</th>\n",
 | ||
|        "      <td>C00081</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Discredit by pointing out the \"noise\" and info...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>info pollution</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>19</th>\n",
 | ||
|        "      <td>C00094</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Force full disclosure on corporate sponsor of ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D7 Deter</td>\n",
 | ||
|        "      <td>T0026 - Create fake research</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>20</th>\n",
 | ||
|        "      <td>C00113</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Debunk and defuse a fake expert / credentials....</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA08 Pump Priming</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T0045</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>21</th>\n",
 | ||
|        "      <td>C00115</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Expose actor and intentions</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA08 Pump Priming</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T0046\\nT0048\\nT0052\\nT0053\\nT0054\\nT0055\\nT0056</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>22</th>\n",
 | ||
|        "      <td>C00116</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Provide proof of involvement</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA08 Pump Priming</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T0041 - Deny involvement</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>23</th>\n",
 | ||
|        "      <td>C00126</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Social media amber alert</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0052\\nT0053\\nT0054\\nT0055\\nT0056</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>24</th>\n",
 | ||
|        "      <td>C00150</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>“calling them out”</td>\n",
 | ||
|        "      <td>Identify social media accounts as sources of p...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>25</th>\n",
 | ||
|        "      <td>C00151</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>“fight in the light”</td>\n",
 | ||
|        "      <td>Use leadership in the arts, entertainment, and...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Hicks19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>26</th>\n",
 | ||
|        "      <td>C00152</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>“name and shame”</td>\n",
 | ||
|        "      <td>USAID has been restructuring its programs to a...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Dalton19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA04 Develop Networks</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>27</th>\n",
 | ||
|        "      <td>C00184</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Media exposure</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00010,I00015,I00032,I00044</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>28</th>\n",
 | ||
|        "      <td>C00189</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Ongoing analysis/monitoring of \"flagged\" profiles</td>\n",
 | ||
|        "      <td>Confirm whether platforms are actively removin...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D6 Destroy</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>29</th>\n",
 | ||
|        "      <td>C00031</td>\n",
 | ||
|        "      <td>dilution</td>\n",
 | ||
|        "      <td>Dilute the core narrative - create multiple pe...</td>\n",
 | ||
|        "      <td>Create competing narratives. Included \"Facilit...</td>\n",
 | ||
|        "      <td>Playbook 1: Create multiple versions of the na...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA02 Objective Planning</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0002 - Facilitate State Propaganda\\nT0003 - L...</td>\n",
 | ||
|        "      <td>CAVEAT: some element of disinformation is simp...</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",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>156</th>\n",
 | ||
|        "      <td>C00122</td>\n",
 | ||
|        "      <td>friction</td>\n",
 | ||
|        "      <td>Content moderation. Censorship?</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>platform_admin</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>157</th>\n",
 | ||
|        "      <td>C00123</td>\n",
 | ||
|        "      <td>friction</td>\n",
 | ||
|        "      <td>Bot control</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>T0049\\nT0051\\nT0052\\nT0053\\nT0054\\nT0055\\nT0056</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>158</th>\n",
 | ||
|        "      <td>C00124</td>\n",
 | ||
|        "      <td>friction</td>\n",
 | ||
|        "      <td>Don't feed the trolls</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>public,media</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>TA08 - Pump Priming\\nTA09 - Exposure</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>159</th>\n",
 | ||
|        "      <td>C00139</td>\n",
 | ||
|        "      <td>friction</td>\n",
 | ||
|        "      <td>Weaponise youtube content matrices</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA11 Persistence</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>160</th>\n",
 | ||
|        "      <td>C00143</td>\n",
 | ||
|        "      <td>targeting</td>\n",
 | ||
|        "      <td>(botnet) DMCA takedown requests to waste group...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>public,elves</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA11 Persistence</td>\n",
 | ||
|        "      <td>D4 Degrade</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>161</th>\n",
 | ||
|        "      <td>C00153</td>\n",
 | ||
|        "      <td>targeting</td>\n",
 | ||
|        "      <td>Use offensive cyber action</td>\n",
 | ||
|        "      <td>Align offensive cyber action with information ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>infosec</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Dalton19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>162</th>\n",
 | ||
|        "      <td>C00156</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Better tell the U.S., NATO, and EU story.</td>\n",
 | ||
|        "      <td>Civil engagement activities conducted on the p...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>government,military</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>163</th>\n",
 | ||
|        "      <td>C00157</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Build alternative news sources</td>\n",
 | ||
|        "      <td>Create alternative local-language news sources...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>p143 of Corker18</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA04 Develop Networks</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>164</th>\n",
 | ||
|        "      <td>C00159</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>Campaign mindset and associated toolbox</td>\n",
 | ||
|        "      <td>A campaign plan for the gray zone must account...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Hicks19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>165</th>\n",
 | ||
|        "      <td>C00160</td>\n",
 | ||
|        "      <td>resilience</td>\n",
 | ||
|        "      <td>find and train influencers</td>\n",
 | ||
|        "      <td>Identify key influencers (e.g. use network ana...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>data scientist,influencers</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>166</th>\n",
 | ||
|        "      <td>C00161</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>Coalition Building and Third-Party Inducements:</td>\n",
 | ||
|        "      <td>Advance coalitions across borders and sectors,...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Dalton19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D7 Deter</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>167</th>\n",
 | ||
|        "      <td>C00162</td>\n",
 | ||
|        "      <td>targeting</td>\n",
 | ||
|        "      <td>collect data/map constellations of Russian“civ...</td>\n",
 | ||
|        "      <td>Kremlin’s narrative spin extends through const...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA04 Develop Networks</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>168</th>\n",
 | ||
|        "      <td>C00164</td>\n",
 | ||
|        "      <td>targeting</td>\n",
 | ||
|        "      <td>compatriot policy</td>\n",
 | ||
|        "      <td>protect the interests of this population and, ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>169</th>\n",
 | ||
|        "      <td>C00165</td>\n",
 | ||
|        "      <td>friction</td>\n",
 | ||
|        "      <td>Limit access to alterable documents</td>\n",
 | ||
|        "      <td>e.g. for leaked legal documents, use court mot...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00015</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T00025</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>170</th>\n",
 | ||
|        "      <td>C00167</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Deploy Information and Narrative-Building in S...</td>\n",
 | ||
|        "      <td>Promote a narrative of transparency, truthfuln...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Hicks19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>171</th>\n",
 | ||
|        "      <td>C00176</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>Improve Coordination with and feedback from th...</td>\n",
 | ||
|        "      <td>gray zone challenges are increasingly multidis...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Dalton19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D7 Deter</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>172</th>\n",
 | ||
|        "      <td>C00179</td>\n",
 | ||
|        "      <td>removal</td>\n",
 | ||
|        "      <td>Identify, monitor, and, if necessary, target R...</td>\n",
 | ||
|        "      <td>Impact of and Dealing with Trolls - \"Chatham H...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA03 Develop People</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>173</th>\n",
 | ||
|        "      <td>C00182</td>\n",
 | ||
|        "      <td>removal</td>\n",
 | ||
|        "      <td>malware detection/quarantine/deletion</td>\n",
 | ||
|        "      <td>(2015) Trustwave reported that a Bedep Trojan ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>infosec</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Rand2237</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>174</th>\n",
 | ||
|        "      <td>C00196</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>Include the role of social media in the regula...</td>\n",
 | ||
|        "      <td>The European Union created significant new reg...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>government</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Hicks19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA07 Channel Selection</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>175</th>\n",
 | ||
|        "      <td>C00200</td>\n",
 | ||
|        "      <td>countermessaging</td>\n",
 | ||
|        "      <td>Respected figure (influencer) disavows misinfo</td>\n",
 | ||
|        "      <td>Has been done in e.g. India</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>influencers</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00044</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>176</th>\n",
 | ||
|        "      <td>C00202</td>\n",
 | ||
|        "      <td>diversion</td>\n",
 | ||
|        "      <td>Set data 'honeytraps'</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00004,I00022</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T0025 leak altered documents</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>177</th>\n",
 | ||
|        "      <td>C00203</td>\n",
 | ||
|        "      <td>friction</td>\n",
 | ||
|        "      <td>Stop offering press credentials to propaganda ...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>government</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00022</td>\n",
 | ||
|        "      <td>TA08 Pump Priming</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>178</th>\n",
 | ||
|        "      <td>C00205</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>strong dialogue between the federal government...</td>\n",
 | ||
|        "      <td>Increase civic resilience by partnering with b...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>companies,government</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>Hicks19</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>179</th>\n",
 | ||
|        "      <td>C00207</td>\n",
 | ||
|        "      <td>targeting</td>\n",
 | ||
|        "      <td>tit-for-tat campaign</td>\n",
 | ||
|        "      <td>As used by Saudis?</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>government,platforms</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00042</td>\n",
 | ||
|        "      <td>TA01 Strategic Planning</td>\n",
 | ||
|        "      <td>D7 Deter</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>180</th>\n",
 | ||
|        "      <td>C00210</td>\n",
 | ||
|        "      <td>resilience</td>\n",
 | ||
|        "      <td>Use encrypted apps for confidential communication</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>2019-11-search</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>I00022</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>T0025</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>181</th>\n",
 | ||
|        "      <td>C00214</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>Create policy that makes social media police d...</td>\n",
 | ||
|        "      <td>German model: facebook forced to police conten...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>government:policymakers</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA07 Channel Selection</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>182</th>\n",
 | ||
|        "      <td>C00215</td>\n",
 | ||
|        "      <td>metatechnique</td>\n",
 | ||
|        "      <td>Use fraud legislation to clean up social media</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>government:policymakers</td>\n",
 | ||
|        "      <td>2019-11-workshop</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA07 Channel Selection</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>183</th>\n",
 | ||
|        "      <td>C00217</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Registries alert when large batches of newsy U...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>platform_admin</td>\n",
 | ||
|        "      <td>grugq</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA07 Channel Selection</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>184</th>\n",
 | ||
|        "      <td>C00218</td>\n",
 | ||
|        "      <td>removal</td>\n",
 | ||
|        "      <td>Censorship</td>\n",
 | ||
|        "      <td>Alter and/or block the publication/disseminati...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>platform_admin</td>\n",
 | ||
|        "      <td>grugq</td>\n",
 | ||
|        "      <td>Taylor81</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA09 Exposure</td>\n",
 | ||
|        "      <td>D2 Deny</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "    <tr>\n",
 | ||
|        "      <th>185</th>\n",
 | ||
|        "      <td>C00219</td>\n",
 | ||
|        "      <td>daylight</td>\n",
 | ||
|        "      <td>Add metadata to content - out of the control o...</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>Add date and source to images</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>grugq</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>TA06 Develop Content</td>\n",
 | ||
|        "      <td>D3 Disrupt</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "      <td>NaN</td>\n",
 | ||
|        "    </tr>\n",
 | ||
|        "  </tbody>\n",
 | ||
|        "</table>\n",
 | ||
|        "<p>186 rows × 13 columns</p>\n",
 | ||
|        "</div>"
 | ||
|       ],
 | ||
|       "text/plain": [
 | ||
|        "         ID     metatechnique  \\\n",
 | ||
|        "0    C00043          cleaning   \n",
 | ||
|        "1    C00053          cleaning   \n",
 | ||
|        "2    C00074          cleaning   \n",
 | ||
|        "3    C00026  countermessaging   \n",
 | ||
|        "4    C00082  countermessaging   \n",
 | ||
|        "5    C00136  countermessaging   \n",
 | ||
|        "6    C00169  countermessaging   \n",
 | ||
|        "7    C00211  countermessaging   \n",
 | ||
|        "8    C00137    data pollution   \n",
 | ||
|        "9    C00140    data pollution   \n",
 | ||
|        "10   C00145    data pollution   \n",
 | ||
|        "11   C00148    data pollution   \n",
 | ||
|        "12   C00149    data pollution   \n",
 | ||
|        "13   C00018          daylight   \n",
 | ||
|        "14   C00019          daylight   \n",
 | ||
|        "15   C00048          daylight   \n",
 | ||
|        "16   C00068          daylight   \n",
 | ||
|        "17   C00069          daylight   \n",
 | ||
|        "18   C00081          daylight   \n",
 | ||
|        "19   C00094          daylight   \n",
 | ||
|        "20   C00113          daylight   \n",
 | ||
|        "21   C00115          daylight   \n",
 | ||
|        "22   C00116          daylight   \n",
 | ||
|        "23   C00126          daylight   \n",
 | ||
|        "24   C00150          daylight   \n",
 | ||
|        "25   C00151          daylight   \n",
 | ||
|        "26   C00152          daylight   \n",
 | ||
|        "27   C00184          daylight   \n",
 | ||
|        "28   C00189          daylight   \n",
 | ||
|        "29   C00031          dilution   \n",
 | ||
|        "..      ...               ...   \n",
 | ||
|        "156  C00122          friction   \n",
 | ||
|        "157  C00123          friction   \n",
 | ||
|        "158  C00124          friction   \n",
 | ||
|        "159  C00139          friction   \n",
 | ||
|        "160  C00143         targeting   \n",
 | ||
|        "161  C00153         targeting   \n",
 | ||
|        "162  C00156  countermessaging   \n",
 | ||
|        "163  C00157  countermessaging   \n",
 | ||
|        "164  C00159     metatechnique   \n",
 | ||
|        "165  C00160        resilience   \n",
 | ||
|        "166  C00161     metatechnique   \n",
 | ||
|        "167  C00162         targeting   \n",
 | ||
|        "168  C00164         targeting   \n",
 | ||
|        "169  C00165          friction   \n",
 | ||
|        "170  C00167  countermessaging   \n",
 | ||
|        "171  C00176     metatechnique   \n",
 | ||
|        "172  C00179           removal   \n",
 | ||
|        "173  C00182           removal   \n",
 | ||
|        "174  C00196     metatechnique   \n",
 | ||
|        "175  C00200  countermessaging   \n",
 | ||
|        "176  C00202         diversion   \n",
 | ||
|        "177  C00203          friction   \n",
 | ||
|        "178  C00205     metatechnique   \n",
 | ||
|        "179  C00207         targeting   \n",
 | ||
|        "180  C00210        resilience   \n",
 | ||
|        "181  C00214     metatechnique   \n",
 | ||
|        "182  C00215     metatechnique   \n",
 | ||
|        "183  C00217          daylight   \n",
 | ||
|        "184  C00218           removal   \n",
 | ||
|        "185  C00219          daylight   \n",
 | ||
|        "\n",
 | ||
|        "                                                 Title  \\\n",
 | ||
|        "0        Detect hijacked accounts and reallocate them    \n",
 | ||
|        "1    Delete old accounts / Remove unused social med...   \n",
 | ||
|        "2       Identify identical content and mass deplatform   \n",
 | ||
|        "3    Shore up democracy based messages (peace, free...   \n",
 | ||
|        "4    Ground truthing as automated response to pollu...   \n",
 | ||
|        "5    Microtarget most likely targets then send them...   \n",
 | ||
|        "6                       develop a creative content hub   \n",
 | ||
|        "7                      Use humorous counter-narratives   \n",
 | ||
|        "8                    Pollute the AB-testing data feeds   \n",
 | ||
|        "9            \"Bomb\" link shorteners with lots of calls   \n",
 | ||
|        "10   Pollute the data voids with wholesome content ...   \n",
 | ||
|        "11                  Add random links to network graphs   \n",
 | ||
|        "12             Poison the monitoring & evaluation data   \n",
 | ||
|        "13   Promote constructive communication by shaming ...   \n",
 | ||
|        "14     Promote playbooks to call out division-enablers   \n",
 | ||
|        "15                                      Name and Shame   \n",
 | ||
|        "16                       Expose online funding as fake   \n",
 | ||
|        "17                             Mark clickbait visually   \n",
 | ||
|        "18   Discredit by pointing out the \"noise\" and info...   \n",
 | ||
|        "19   Force full disclosure on corporate sponsor of ...   \n",
 | ||
|        "20   Debunk and defuse a fake expert / credentials....   \n",
 | ||
|        "21                         Expose actor and intentions   \n",
 | ||
|        "22                        Provide proof of involvement   \n",
 | ||
|        "23                            Social media amber alert   \n",
 | ||
|        "24                                  “calling them out”   \n",
 | ||
|        "25                                “fight in the light”   \n",
 | ||
|        "26                                    “name and shame”   \n",
 | ||
|        "27                                      Media exposure   \n",
 | ||
|        "28   Ongoing analysis/monitoring of \"flagged\" profiles   \n",
 | ||
|        "29   Dilute the core narrative - create multiple pe...   \n",
 | ||
|        "..                                                 ...   \n",
 | ||
|        "156                    Content moderation. Censorship?   \n",
 | ||
|        "157                                        Bot control   \n",
 | ||
|        "158                              Don't feed the trolls   \n",
 | ||
|        "159                 Weaponise youtube content matrices   \n",
 | ||
|        "160  (botnet) DMCA takedown requests to waste group...   \n",
 | ||
|        "161                         Use offensive cyber action   \n",
 | ||
|        "162          Better tell the U.S., NATO, and EU story.   \n",
 | ||
|        "163                     Build alternative news sources   \n",
 | ||
|        "164            Campaign mindset and associated toolbox   \n",
 | ||
|        "165                         find and train influencers   \n",
 | ||
|        "166    Coalition Building and Third-Party Inducements:   \n",
 | ||
|        "167  collect data/map constellations of Russian“civ...   \n",
 | ||
|        "168                                  compatriot policy   \n",
 | ||
|        "169                Limit access to alterable documents   \n",
 | ||
|        "170  Deploy Information and Narrative-Building in S...   \n",
 | ||
|        "171  Improve Coordination with and feedback from th...   \n",
 | ||
|        "172  Identify, monitor, and, if necessary, target R...   \n",
 | ||
|        "173              malware detection/quarantine/deletion   \n",
 | ||
|        "174  Include the role of social media in the regula...   \n",
 | ||
|        "175     Respected figure (influencer) disavows misinfo   \n",
 | ||
|        "176                              Set data 'honeytraps'   \n",
 | ||
|        "177  Stop offering press credentials to propaganda ...   \n",
 | ||
|        "178  strong dialogue between the federal government...   \n",
 | ||
|        "179                               tit-for-tat campaign   \n",
 | ||
|        "180  Use encrypted apps for confidential communication   \n",
 | ||
|        "181  Create policy that makes social media police d...   \n",
 | ||
|        "182     Use fraud legislation to clean up social media   \n",
 | ||
|        "183  Registries alert when large batches of newsy U...   \n",
 | ||
|        "184                                         Censorship   \n",
 | ||
|        "185  Add metadata to content - out of the control o...   \n",
 | ||
|        "\n",
 | ||
|        "                                               Details  \\\n",
 | ||
|        "0                                                  NaN   \n",
 | ||
|        "1                                                  NaN   \n",
 | ||
|        "2                                                   \\n   \n",
 | ||
|        "3                                               Unsure   \n",
 | ||
|        "4                                                  NaN   \n",
 | ||
|        "5                                                  NaN   \n",
 | ||
|        "6    international donors will donate to a basket f...   \n",
 | ||
|        "7                                                  NaN   \n",
 | ||
|        "8    Polluting A/B testing requires knowledge of MO...   \n",
 | ||
|        "9    Applies to most of the content used by exposur...   \n",
 | ||
|        "10                                                 NaN   \n",
 | ||
|        "11   If creators are using network analysis to dete...   \n",
 | ||
|        "12                                                 NaN   \n",
 | ||
|        "13   Duplicate of \"Promote playbooks to call out di...   \n",
 | ||
|        "14   Duplicate of \"Promote constructive communicati...   \n",
 | ||
|        "15                                                 NaN   \n",
 | ||
|        "16                                                 NaN   \n",
 | ||
|        "17                                                 NaN   \n",
 | ||
|        "18                                                 NaN   \n",
 | ||
|        "19                                                 NaN   \n",
 | ||
|        "20                                                 NaN   \n",
 | ||
|        "21                                                 NaN   \n",
 | ||
|        "22                                                 NaN   \n",
 | ||
|        "23                                                 NaN   \n",
 | ||
|        "24   Identify social media accounts as sources of p...   \n",
 | ||
|        "25   Use leadership in the arts, entertainment, and...   \n",
 | ||
|        "26   USAID has been restructuring its programs to a...   \n",
 | ||
|        "27                                                 NaN   \n",
 | ||
|        "28   Confirm whether platforms are actively removin...   \n",
 | ||
|        "29   Create competing narratives. Included \"Facilit...   \n",
 | ||
|        "..                                                 ...   \n",
 | ||
|        "156                                                NaN   \n",
 | ||
|        "157                                                NaN   \n",
 | ||
|        "158                                                NaN   \n",
 | ||
|        "159                                                NaN   \n",
 | ||
|        "160                                                NaN   \n",
 | ||
|        "161  Align offensive cyber action with information ...   \n",
 | ||
|        "162  Civil engagement activities conducted on the p...   \n",
 | ||
|        "163  Create alternative local-language news sources...   \n",
 | ||
|        "164  A campaign plan for the gray zone must account...   \n",
 | ||
|        "165  Identify key influencers (e.g. use network ana...   \n",
 | ||
|        "166  Advance coalitions across borders and sectors,...   \n",
 | ||
|        "167  Kremlin’s narrative spin extends through const...   \n",
 | ||
|        "168  protect the interests of this population and, ...   \n",
 | ||
|        "169  e.g. for leaked legal documents, use court mot...   \n",
 | ||
|        "170  Promote a narrative of transparency, truthfuln...   \n",
 | ||
|        "171  gray zone challenges are increasingly multidis...   \n",
 | ||
|        "172  Impact of and Dealing with Trolls - \"Chatham H...   \n",
 | ||
|        "173  (2015) Trustwave reported that a Bedep Trojan ...   \n",
 | ||
|        "174  The European Union created significant new reg...   \n",
 | ||
|        "175                        Has been done in e.g. India   \n",
 | ||
|        "176                                                NaN   \n",
 | ||
|        "177                                                NaN   \n",
 | ||
|        "178  Increase civic resilience by partnering with b...   \n",
 | ||
|        "179                                As used by Saudis?    \n",
 | ||
|        "180                                                NaN   \n",
 | ||
|        "181  German model: facebook forced to police conten...   \n",
 | ||
|        "182                                                NaN   \n",
 | ||
|        "183                                                NaN   \n",
 | ||
|        "184  Alter and/or block the publication/disseminati...   \n",
 | ||
|        "185                                                NaN   \n",
 | ||
|        "\n",
 | ||
|        "                                           Playbook(s)  \\\n",
 | ||
|        "0    In all playbooks the platform must force user ...   \n",
 | ||
|        "1    Social media companies remove inactive account...   \n",
 | ||
|        "2    In all cases some checks need to prevent depla...   \n",
 | ||
|        "3                                                  NaN   \n",
 | ||
|        "4                                                  NaN   \n",
 | ||
|        "5    Playbook 1: Work with platform to identify act...   \n",
 | ||
|        "6                                                  NaN   \n",
 | ||
|        "7                                                  NaN   \n",
 | ||
|        "8    Playbook 1: Promote damp squibs.  Within a kno...   \n",
 | ||
|        "9    Playbook 1: DDoS adversary link shorteners by ...   \n",
 | ||
|        "10                                                 NaN   \n",
 | ||
|        "11   Playbook 1: Degrade TA engagement using bots; ...   \n",
 | ||
|        "12   Playbook 1: Distort TA demographics by posting...   \n",
 | ||
|        "13                                                 NaN   \n",
 | ||
|        "14   Spread Infographics & Training Material teachi...   \n",
 | ||
|        "15   Identify the accounts, the real person's name ...   \n",
 | ||
|        "16                                                 NaN   \n",
 | ||
|        "17                                                 NaN   \n",
 | ||
|        "18                                                 NaN   \n",
 | ||
|        "19                                                 NaN   \n",
 | ||
|        "20                                                 NaN   \n",
 | ||
|        "21                                                 NaN   \n",
 | ||
|        "22                                                 NaN   \n",
 | ||
|        "23                                                 NaN   \n",
 | ||
|        "24                                                 NaN   \n",
 | ||
|        "25                                                 NaN   \n",
 | ||
|        "26                                                 NaN   \n",
 | ||
|        "27                                                 NaN   \n",
 | ||
|        "28                                                 NaN   \n",
 | ||
|        "29   Playbook 1: Create multiple versions of the na...   \n",
 | ||
|        "..                                                 ...   \n",
 | ||
|        "156                                                NaN   \n",
 | ||
|        "157                                                NaN   \n",
 | ||
|        "158                                                NaN   \n",
 | ||
|        "159                                                NaN   \n",
 | ||
|        "160                                                NaN   \n",
 | ||
|        "161                                                NaN   \n",
 | ||
|        "162                                                NaN   \n",
 | ||
|        "163                                                NaN   \n",
 | ||
|        "164                                                NaN   \n",
 | ||
|        "165                                                NaN   \n",
 | ||
|        "166                                                NaN   \n",
 | ||
|        "167                                                NaN   \n",
 | ||
|        "168                                                NaN   \n",
 | ||
|        "169                                                NaN   \n",
 | ||
|        "170                                                NaN   \n",
 | ||
|        "171                                                NaN   \n",
 | ||
|        "172                                                NaN   \n",
 | ||
|        "173                                                NaN   \n",
 | ||
|        "174                                                NaN   \n",
 | ||
|        "175                                                NaN   \n",
 | ||
|        "176                                                NaN   \n",
 | ||
|        "177                                                NaN   \n",
 | ||
|        "178                                                NaN   \n",
 | ||
|        "179                                                NaN   \n",
 | ||
|        "180                                                NaN   \n",
 | ||
|        "181                                                NaN   \n",
 | ||
|        "182                                                NaN   \n",
 | ||
|        "183                                                NaN   \n",
 | ||
|        "184                                                NaN   \n",
 | ||
|        "185                      Add date and source to images   \n",
 | ||
|        "\n",
 | ||
|        "                                      Resources needed  \\\n",
 | ||
|        "0         platform_admin,activists,civil_society,money   \n",
 | ||
|        "1    platform_admin,platform_admin:socialmedia,publ...   \n",
 | ||
|        "2            platform_admin,platform_admin:socialmedia   \n",
 | ||
|        "3                                                  NaN   \n",
 | ||
|        "4                                                  NaN   \n",
 | ||
|        "5                                                  NaN   \n",
 | ||
|        "6                                                  NaN   \n",
 | ||
|        "7                                                  NaN   \n",
 | ||
|        "8                                                  NaN   \n",
 | ||
|        "9                                                  NaN   \n",
 | ||
|        "10                                                 NaN   \n",
 | ||
|        "11                                 platform_algorithms   \n",
 | ||
|        "12                                                 NaN   \n",
 | ||
|        "13                                                 NaN   \n",
 | ||
|        "14                                                 NaN   \n",
 | ||
|        "15                                                 NaN   \n",
 | ||
|        "16                                                 NaN   \n",
 | ||
|        "17                                                 NaN   \n",
 | ||
|        "18                                                 NaN   \n",
 | ||
|        "19                                                 NaN   \n",
 | ||
|        "20                                                 NaN   \n",
 | ||
|        "21                                                 NaN   \n",
 | ||
|        "22                                                 NaN   \n",
 | ||
|        "23                                                 NaN   \n",
 | ||
|        "24                                                 NaN   \n",
 | ||
|        "25                                                 NaN   \n",
 | ||
|        "26                                                 NaN   \n",
 | ||
|        "27                                                 NaN   \n",
 | ||
|        "28                                                 NaN   \n",
 | ||
|        "29                                                 NaN   \n",
 | ||
|        "..                                                 ...   \n",
 | ||
|        "156                                     platform_admin   \n",
 | ||
|        "157                                                NaN   \n",
 | ||
|        "158                                       public,media   \n",
 | ||
|        "159                                                NaN   \n",
 | ||
|        "160                                       public,elves   \n",
 | ||
|        "161                                            infosec   \n",
 | ||
|        "162                                government,military   \n",
 | ||
|        "163                                                NaN   \n",
 | ||
|        "164                                                NaN   \n",
 | ||
|        "165                         data scientist,influencers   \n",
 | ||
|        "166                                                NaN   \n",
 | ||
|        "167                                                NaN   \n",
 | ||
|        "168                                                NaN   \n",
 | ||
|        "169                                                NaN   \n",
 | ||
|        "170                                                NaN   \n",
 | ||
|        "171                                                NaN   \n",
 | ||
|        "172                                                NaN   \n",
 | ||
|        "173                                            infosec   \n",
 | ||
|        "174                                         government   \n",
 | ||
|        "175                                        influencers   \n",
 | ||
|        "176                                                NaN   \n",
 | ||
|        "177                                         government   \n",
 | ||
|        "178                               companies,government   \n",
 | ||
|        "179                               government,platforms   \n",
 | ||
|        "180                                                NaN   \n",
 | ||
|        "181                            government:policymakers   \n",
 | ||
|        "182                            government:policymakers   \n",
 | ||
|        "183                                     platform_admin   \n",
 | ||
|        "184                                     platform_admin   \n",
 | ||
|        "185                                                NaN   \n",
 | ||
|        "\n",
 | ||
|        "                           How found        References  \\\n",
 | ||
|        "0                   2019-11-workshop               NaN   \n",
 | ||
|        "1    2019-11-workshop,2019-11-search               NaN   \n",
 | ||
|        "2                   2019-11-workshop               NaN   \n",
 | ||
|        "3                   2019-11-workshop               NaN   \n",
 | ||
|        "4                   2019-11-workshop               NaN   \n",
 | ||
|        "5                   2019-11-workshop               NaN   \n",
 | ||
|        "6                     2019-11-search          Rand2237   \n",
 | ||
|        "7                     2019-11-search               NaN   \n",
 | ||
|        "8                   2019-11-workshop               NaN   \n",
 | ||
|        "9                   2019-11-workshop               NaN   \n",
 | ||
|        "10                  2019-11-workshop               NaN   \n",
 | ||
|        "11                  2019-11-workshop               NaN   \n",
 | ||
|        "12                  2019-11-workshop               NaN   \n",
 | ||
|        "13                  2019-11-workshop               NaN   \n",
 | ||
|        "14                  2019-11-workshop               NaN   \n",
 | ||
|        "15                  2019-11-workshop               NaN   \n",
 | ||
|        "16                  2019-11-workshop               NaN   \n",
 | ||
|        "17                  2019-11-workshop               NaN   \n",
 | ||
|        "18                  2019-11-workshop               NaN   \n",
 | ||
|        "19                  2019-11-workshop               NaN   \n",
 | ||
|        "20                  2019-11-workshop               NaN   \n",
 | ||
|        "21                  2019-11-workshop               NaN   \n",
 | ||
|        "22                  2019-11-workshop               NaN   \n",
 | ||
|        "23                  2019-11-workshop               NaN   \n",
 | ||
|        "24                    2019-11-search          Rand2237   \n",
 | ||
|        "25                    2019-11-search           Hicks19   \n",
 | ||
|        "26                    2019-11-search          Dalton19   \n",
 | ||
|        "27                    2019-11-search               NaN   \n",
 | ||
|        "28                    2019-11-search          Rand2237   \n",
 | ||
|        "29                  2019-11-workshop               NaN   \n",
 | ||
|        "..                               ...               ...   \n",
 | ||
|        "156                 2019-11-workshop               NaN   \n",
 | ||
|        "157                 2019-11-workshop               NaN   \n",
 | ||
|        "158                 2019-11-workshop               NaN   \n",
 | ||
|        "159                 2019-11-workshop               NaN   \n",
 | ||
|        "160                 2019-11-workshop               NaN   \n",
 | ||
|        "161                   2019-11-search          Dalton19   \n",
 | ||
|        "162                   2019-11-search          Rand2237   \n",
 | ||
|        "163                   2019-11-search  p143 of Corker18   \n",
 | ||
|        "164                   2019-11-search           Hicks19   \n",
 | ||
|        "165                   2019-11-search          Rand2237   \n",
 | ||
|        "166                   2019-11-search          Dalton19   \n",
 | ||
|        "167                   2019-11-search          Rand2237   \n",
 | ||
|        "168                   2019-11-search          Rand2237   \n",
 | ||
|        "169                   2019-11-search               NaN   \n",
 | ||
|        "170                   2019-11-search           Hicks19   \n",
 | ||
|        "171                   2019-11-search          Dalton19   \n",
 | ||
|        "172                   2019-11-search          Rand2237   \n",
 | ||
|        "173                   2019-11-search          Rand2237   \n",
 | ||
|        "174                   2019-11-search           Hicks19   \n",
 | ||
|        "175                   2019-11-search               NaN   \n",
 | ||
|        "176                   2019-11-search               NaN   \n",
 | ||
|        "177                   2019-11-search               NaN   \n",
 | ||
|        "178                   2019-11-search           Hicks19   \n",
 | ||
|        "179                   2019-11-search               NaN   \n",
 | ||
|        "180                   2019-11-search               NaN   \n",
 | ||
|        "181                 2019-11-workshop               NaN   \n",
 | ||
|        "182                 2019-11-workshop               NaN   \n",
 | ||
|        "183                            grugq               NaN   \n",
 | ||
|        "184                            grugq          Taylor81   \n",
 | ||
|        "185                            grugq               NaN   \n",
 | ||
|        "\n",
 | ||
|        "                       Incidents                      Tactic    Response  \\\n",
 | ||
|        "0                            NaN         TA03 Develop People  D3 Disrupt   \n",
 | ||
|        "1                         I00004       TA04 Develop Networks  D4 Degrade   \n",
 | ||
|        "2                            NaN        TA06 Develop Content     D2 Deny   \n",
 | ||
|        "3                            NaN     TA01 Strategic Planning  D4 Degrade   \n",
 | ||
|        "4                            NaN        TA06 Develop Content  D3 Disrupt   \n",
 | ||
|        "5                            NaN            TA11 Persistence  D3 Disrupt   \n",
 | ||
|        "6                            NaN             TA09 - Exposure  D3 Disrupt   \n",
 | ||
|        "7                         I00004             TA09 - Exposure  D3 Disrupt   \n",
 | ||
|        "8                            NaN            TA11 Persistence  D3 Disrupt   \n",
 | ||
|        "9                            NaN            TA11 Persistence  D4 Degrade   \n",
 | ||
|        "10                           NaN            TA11 Persistence  D4 Degrade   \n",
 | ||
|        "11                           NaN  TA12 Measure Effectiveness  D4 Degrade   \n",
 | ||
|        "12                           NaN  TA12 Measure Effectiveness  D4 Degrade   \n",
 | ||
|        "13                           NaN     TA01 Strategic Planning  D3 Disrupt   \n",
 | ||
|        "14                           NaN     TA01 Strategic Planning  D3 Disrupt   \n",
 | ||
|        "15                           NaN         TA03 Develop People    D7 Deter   \n",
 | ||
|        "16                           NaN         TA05 Microtargeting  D3 Disrupt   \n",
 | ||
|        "17                           NaN         TA05 Microtargeting  D3 Disrupt   \n",
 | ||
|        "18                           NaN        TA06 Develop Content  D3 Disrupt   \n",
 | ||
|        "19                           NaN        TA06 Develop Content    D7 Deter   \n",
 | ||
|        "20                           NaN           TA08 Pump Priming     D2 Deny   \n",
 | ||
|        "21                           NaN           TA08 Pump Priming     D2 Deny   \n",
 | ||
|        "22                           NaN           TA08 Pump Priming     D2 Deny   \n",
 | ||
|        "23                           NaN               TA09 Exposure  D3 Disrupt   \n",
 | ||
|        "24                           NaN         TA03 Develop People     D2 Deny   \n",
 | ||
|        "25                           NaN               TA09 Exposure  D3 Disrupt   \n",
 | ||
|        "26                           NaN       TA04 Develop Networks     D2 Deny   \n",
 | ||
|        "27   I00010,I00015,I00032,I00044               TA09 Exposure  D4 Degrade   \n",
 | ||
|        "28                           NaN         TA03 Develop People  D6 Destroy   \n",
 | ||
|        "29                           NaN     TA02 Objective Planning  D3 Disrupt   \n",
 | ||
|        "..                           ...                         ...         ...   \n",
 | ||
|        "156                          NaN               TA09 Exposure     D2 Deny   \n",
 | ||
|        "157                          NaN               TA09 Exposure  D3 Disrupt   \n",
 | ||
|        "158                          NaN               TA09 Exposure  D3 Disrupt   \n",
 | ||
|        "159                          NaN            TA11 Persistence  D3 Disrupt   \n",
 | ||
|        "160                          NaN            TA11 Persistence  D4 Degrade   \n",
 | ||
|        "161                          NaN     TA01 Strategic Planning  D3 Disrupt   \n",
 | ||
|        "162                          NaN               TA09 Exposure  D3 Disrupt   \n",
 | ||
|        "163                          NaN       TA04 Develop Networks     D2 Deny   \n",
 | ||
|        "164                          NaN     TA01 Strategic Planning  D3 Disrupt   \n",
 | ||
|        "165                          NaN         TA03 Develop People     D2 Deny   \n",
 | ||
|        "166                          NaN     TA01 Strategic Planning    D7 Deter   \n",
 | ||
|        "167                          NaN       TA04 Develop Networks  D3 Disrupt   \n",
 | ||
|        "168                          NaN         TA03 Develop People  D3 Disrupt   \n",
 | ||
|        "169                       I00015        TA06 Develop Content     D2 Deny   \n",
 | ||
|        "170                          NaN        TA06 Develop Content     D2 Deny   \n",
 | ||
|        "171                          NaN     TA01 Strategic Planning    D7 Deter   \n",
 | ||
|        "172                          NaN         TA03 Develop People  D3 Disrupt   \n",
 | ||
|        "173                          NaN               TA09 Exposure     D2 Deny   \n",
 | ||
|        "174                          NaN      TA07 Channel Selection  D3 Disrupt   \n",
 | ||
|        "175                       I00044               TA09 Exposure  D3 Disrupt   \n",
 | ||
|        "176                I00004,I00022        TA06 Develop Content     D2 Deny   \n",
 | ||
|        "177                       I00022           TA08 Pump Priming  D3 Disrupt   \n",
 | ||
|        "178                          NaN     TA01 Strategic Planning  D3 Disrupt   \n",
 | ||
|        "179                       I00042     TA01 Strategic Planning    D7 Deter   \n",
 | ||
|        "180                       I00022        TA06 Develop Content     D2 Deny   \n",
 | ||
|        "181                          NaN      TA07 Channel Selection  D3 Disrupt   \n",
 | ||
|        "182                          NaN      TA07 Channel Selection  D3 Disrupt   \n",
 | ||
|        "183                          NaN      TA07 Channel Selection     D2 Deny   \n",
 | ||
|        "184                          NaN               TA09 Exposure     D2 Deny   \n",
 | ||
|        "185                          NaN        TA06 Develop Content  D3 Disrupt   \n",
 | ||
|        "\n",
 | ||
|        "                                            Techniques  \\\n",
 | ||
|        "0                              T0011 - Hijack accounts   \n",
 | ||
|        "1    T0011 - Hijack accounts\\nTA06 - Develop Conten...   \n",
 | ||
|        "2    T0022 - Conspiracy narratives\\nT0026 - Create ...   \n",
 | ||
|        "3                  T0002 - Facilitate State Propaganda   \n",
 | ||
|        "4                                                  NaN   \n",
 | ||
|        "5    TA08 - Pump Priming\\nTA09 - Exposure\\nTA10 - G...   \n",
 | ||
|        "6                                                  NaN   \n",
 | ||
|        "7                                                  NaN   \n",
 | ||
|        "8                                T0020 - Trial content   \n",
 | ||
|        "9    TA05 - Microtargeting\\nTA09 - Exposure*\\nTA10 ...   \n",
 | ||
|        "10   T0015 - Create hashtag\\nT0046 - Search Engine ...   \n",
 | ||
|        "11                                                 NaN   \n",
 | ||
|        "12   TA12 - Measure Effectiveness\\nT0020 - Trial co...   \n",
 | ||
|        "13   TA08 - Pump Priming\\nTA09 - Exposure\\nTA10 - G...   \n",
 | ||
|        "14   TA08 - Pump Priming\\nTA09 - Exposure\\nTA10 - G...   \n",
 | ||
|        "15   TA08 - Pump Priming\\nT0048 - Cow online opinio...   \n",
 | ||
|        "16   T0017 - Promote online funding\\nT0061 - Sell m...   \n",
 | ||
|        "17                                   T0016 - Clickbait   \n",
 | ||
|        "18                                      info pollution   \n",
 | ||
|        "19                        T0026 - Create fake research   \n",
 | ||
|        "20                                               T0045   \n",
 | ||
|        "21     T0046\\nT0048\\nT0052\\nT0053\\nT0054\\nT0055\\nT0056   \n",
 | ||
|        "22                            T0041 - Deny involvement   \n",
 | ||
|        "23                   T0052\\nT0053\\nT0054\\nT0055\\nT0056   \n",
 | ||
|        "24                                                 NaN   \n",
 | ||
|        "25                                                 NaN   \n",
 | ||
|        "26                                                 NaN   \n",
 | ||
|        "27                                                 NaN   \n",
 | ||
|        "28                                                 NaN   \n",
 | ||
|        "29   T0002 - Facilitate State Propaganda\\nT0003 - L...   \n",
 | ||
|        "..                                                 ...   \n",
 | ||
|        "156                                                NaN   \n",
 | ||
|        "157    T0049\\nT0051\\nT0052\\nT0053\\nT0054\\nT0055\\nT0056   \n",
 | ||
|        "158               TA08 - Pump Priming\\nTA09 - Exposure   \n",
 | ||
|        "159                                                NaN   \n",
 | ||
|        "160                                                NaN   \n",
 | ||
|        "161                                                NaN   \n",
 | ||
|        "162                                                NaN   \n",
 | ||
|        "163                                                NaN   \n",
 | ||
|        "164                                                NaN   \n",
 | ||
|        "165                                                NaN   \n",
 | ||
|        "166                                                NaN   \n",
 | ||
|        "167                                                NaN   \n",
 | ||
|        "168                                                NaN   \n",
 | ||
|        "169                                             T00025   \n",
 | ||
|        "170                                                NaN   \n",
 | ||
|        "171                                                NaN   \n",
 | ||
|        "172                                                NaN   \n",
 | ||
|        "173                                                NaN   \n",
 | ||
|        "174                                                NaN   \n",
 | ||
|        "175                                                NaN   \n",
 | ||
|        "176                       T0025 leak altered documents   \n",
 | ||
|        "177                                                NaN   \n",
 | ||
|        "178                                                NaN   \n",
 | ||
|        "179                                                NaN   \n",
 | ||
|        "180                                             T0025    \n",
 | ||
|        "181                                                NaN   \n",
 | ||
|        "182                                                NaN   \n",
 | ||
|        "183                                                NaN   \n",
 | ||
|        "184                                                NaN   \n",
 | ||
|        "185                                                NaN   \n",
 | ||
|        "\n",
 | ||
|        "                                                 NOTES  \n",
 | ||
|        "0                                                  NaN  \n",
 | ||
|        "1                                                  NaN  \n",
 | ||
|        "2                                                  NaN  \n",
 | ||
|        "3                                                  NaN  \n",
 | ||
|        "4                                                  NaN  \n",
 | ||
|        "5                                                  NaN  \n",
 | ||
|        "6                                                  NaN  \n",
 | ||
|        "7                                                  NaN  \n",
 | ||
|        "8                                                  NaN  \n",
 | ||
|        "9                                                  NaN  \n",
 | ||
|        "10                                                 NaN  \n",
 | ||
|        "11                                                 NaN  \n",
 | ||
|        "12                                                 NaN  \n",
 | ||
|        "13                                                 NaN  \n",
 | ||
|        "14                                                 NaN  \n",
 | ||
|        "15                                                 NaN  \n",
 | ||
|        "16                                                 NaN  \n",
 | ||
|        "17                                                 NaN  \n",
 | ||
|        "18                                                 NaN  \n",
 | ||
|        "19                                                 NaN  \n",
 | ||
|        "20                                                 NaN  \n",
 | ||
|        "21                                                 NaN  \n",
 | ||
|        "22                                                 NaN  \n",
 | ||
|        "23                                                 NaN  \n",
 | ||
|        "24                                                 NaN  \n",
 | ||
|        "25                                                 NaN  \n",
 | ||
|        "26                                                 NaN  \n",
 | ||
|        "27                                                 NaN  \n",
 | ||
|        "28                                                 NaN  \n",
 | ||
|        "29   CAVEAT: some element of disinformation is simp...  \n",
 | ||
|        "..                                                 ...  \n",
 | ||
|        "156                                                NaN  \n",
 | ||
|        "157                                                NaN  \n",
 | ||
|        "158                                                NaN  \n",
 | ||
|        "159                                                NaN  \n",
 | ||
|        "160                                                NaN  \n",
 | ||
|        "161                                                NaN  \n",
 | ||
|        "162                                                NaN  \n",
 | ||
|        "163                                                NaN  \n",
 | ||
|        "164                                                NaN  \n",
 | ||
|        "165                                                NaN  \n",
 | ||
|        "166                                                NaN  \n",
 | ||
|        "167                                                NaN  \n",
 | ||
|        "168                                                NaN  \n",
 | ||
|        "169                                                NaN  \n",
 | ||
|        "170                                                NaN  \n",
 | ||
|        "171                                                NaN  \n",
 | ||
|        "172                                                NaN  \n",
 | ||
|        "173                                                NaN  \n",
 | ||
|        "174                                                NaN  \n",
 | ||
|        "175                                                NaN  \n",
 | ||
|        "176                                                NaN  \n",
 | ||
|        "177                                                NaN  \n",
 | ||
|        "178                                                NaN  \n",
 | ||
|        "179                                                NaN  \n",
 | ||
|        "180                                                NaN  \n",
 | ||
|        "181                                                NaN  \n",
 | ||
|        "182                                                NaN  \n",
 | ||
|        "183                                                NaN  \n",
 | ||
|        "184                                                NaN  \n",
 | ||
|        "185                                                NaN  \n",
 | ||
|        "\n",
 | ||
|        "[186 rows x 13 columns]"
 | ||
|       ]
 | ||
|      },
 | ||
|      "execution_count": 1,
 | ||
|      "metadata": {},
 | ||
|      "output_type": "execute_result"
 | ||
|     }
 | ||
|    ],
 | ||
|    "source": [
 | ||
|     "import counter\n",
 | ||
|     "\n",
 | ||
|     "counter = counter.Counter()\n",
 | ||
|     "counter.write_tactics_markdown()\n",
 | ||
|     "counter.write_metacounts_markdown()\n",
 | ||
|     "counter.dfcounters"
 | ||
|    ]
 | ||
|   },
 | ||
|   {
 | ||
|    "cell_type": "code",
 | ||
|    "execution_count": 2,
 | ||
|    "metadata": {},
 | ||
|    "outputs": [
 | ||
|     {
 | ||
|      "name": "stdout",
 | ||
|      "output_type": "stream",
 | ||
|      "text": [
 | ||
|       "                            index  Res\n",
 | ||
|       "0                             DHS    1\n",
 | ||
|       "1                             NGO    1\n",
 | ||
|       "2                       activists    2\n",
 | ||
|       "3                          adtech    1\n",
 | ||
|       "4                   civil_society    1\n",
 | ||
|       "5                community_groups    1\n",
 | ||
|       "6                       companies    1\n",
 | ||
|       "7                content_creators    1\n",
 | ||
|       "8                  data scientist    1\n",
 | ||
|       "9                  data_scientist    1\n",
 | ||
|       "10                    datastreams    1\n",
 | ||
|       "11                     developers    2\n",
 | ||
|       "12                      educators   11\n",
 | ||
|       "13                          elves    1\n",
 | ||
|       "14                   factcheckers    2\n",
 | ||
|       "15                        funding    1\n",
 | ||
|       "16                 gamesdesigners    1\n",
 | ||
|       "17                     government    7\n",
 | ||
|       "18        government:policymakers    8\n",
 | ||
|       "19                    influencers    3\n",
 | ||
|       "20  influencers:trusted_authority    1\n",
 | ||
|       "21                        infosec    2\n",
 | ||
|       "22                      libraries    1\n",
 | ||
|       "23                          media   10\n",
 | ||
|       "24                       military    1\n",
 | ||
|       "25                          money    2\n",
 | ||
|       "26                 platform_admin   11\n",
 | ||
|       "27          platform_admin:adtech    1\n",
 | ||
|       "28    platform_admin:fundingsites    1\n",
 | ||
|       "29     platform_admin:socialmedia    5\n",
 | ||
|       "30            platform_algorithms    8\n",
 | ||
|       "31              platform_outreach    1\n",
 | ||
|       "32                      platforms    1\n",
 | ||
|       "33                         public    4\n",
 | ||
|       "34          public:account_owners    1\n",
 | ||
|       "35        religious_organisations    1\n",
 | ||
|       "36                        schools    1\n",
 | ||
|       "37                   server_admin    1\n"
 | ||
|      ]
 | ||
|     }
 | ||
|    ],
 | ||
|    "source": [
 | ||
|     "import pandas as pd\n",
 | ||
|     "\n",
 | ||
|     "print('{}'.format(counter.idresource['Res'].value_counts().sort_index().reset_index()))"
 | ||
|    ]
 | ||
|   },
 | ||
|   {
 | ||
|    "cell_type": "code",
 | ||
|    "execution_count": 3,
 | ||
|    "metadata": {},
 | ||
|    "outputs": [
 | ||
|     {
 | ||
|      "name": "stdout",
 | ||
|      "output_type": "stream",
 | ||
|      "text": [
 | ||
|       "Writing ../resource/DHScounters.md\n",
 | ||
|       "Writing ../resource/NGOcounters.md\n",
 | ||
|       "Writing ../resource/activistscounters.md\n",
 | ||
|       "Writing ../resource/adtechcounters.md\n",
 | ||
|       "Writing ../resource/civil_societycounters.md\n",
 | ||
|       "Writing ../resource/community_groupscounters.md\n",
 | ||
|       "Writing ../resource/companiescounters.md\n",
 | ||
|       "Writing ../resource/content_creatorscounters.md\n",
 | ||
|       "Writing ../resource/data scientistcounters.md\n",
 | ||
|       "Writing ../resource/data_scientistcounters.md\n",
 | ||
|       "Writing ../resource/datastreamscounters.md\n",
 | ||
|       "Writing ../resource/developerscounters.md\n",
 | ||
|       "Writing ../resource/educatorscounters.md\n",
 | ||
|       "Writing ../resource/elvescounters.md\n",
 | ||
|       "Writing ../resource/factcheckerscounters.md\n",
 | ||
|       "Writing ../resource/fundingcounters.md\n",
 | ||
|       "Writing ../resource/gamesdesignerscounters.md\n",
 | ||
|       "Writing ../resource/governmentcounters.md\n",
 | ||
|       "Writing ../resource/government:policymakerscounters.md\n",
 | ||
|       "Writing ../resource/influencerscounters.md\n",
 | ||
|       "Writing ../resource/influencers:trusted_authoritycounters.md\n",
 | ||
|       "Writing ../resource/infoseccounters.md\n",
 | ||
|       "Writing ../resource/librariescounters.md\n",
 | ||
|       "Writing ../resource/mediacounters.md\n",
 | ||
|       "Writing ../resource/militarycounters.md\n",
 | ||
|       "Writing ../resource/moneycounters.md\n",
 | ||
|       "Writing ../resource/platform_admincounters.md\n",
 | ||
|       "Writing ../resource/platform_admin:adtechcounters.md\n",
 | ||
|       "Writing ../resource/platform_admin:fundingsitescounters.md\n",
 | ||
|       "Writing ../resource/platform_admin:socialmediacounters.md\n",
 | ||
|       "Writing ../resource/platform_algorithmscounters.md\n",
 | ||
|       "Writing ../resource/platform_outreachcounters.md\n",
 | ||
|       "Writing ../resource/platformscounters.md\n",
 | ||
|       "Writing ../resource/publiccounters.md\n",
 | ||
|       "Writing ../resource/public:account_ownerscounters.md\n",
 | ||
|       "Writing ../resource/religious_organisationscounters.md\n",
 | ||
|       "Writing ../resource/schoolscounters.md\n",
 | ||
|       "Writing ../resource/server_admincounters.md\n",
 | ||
|       "updated ../resource_counts.md\n"
 | ||
|      ]
 | ||
|     }
 | ||
|    ],
 | ||
|    "source": [
 | ||
|     "import os\n",
 | ||
|     "import numpy as np\n",
 | ||
|     "\n",
 | ||
|     "def create_resource_file(index, rowtype, datadir):\n",
 | ||
|     "    oid = index\n",
 | ||
|     "    counterrows = counter.idresource[counter.idresource['Res'] == index]['ID'].to_list()\n",
 | ||
|     "    html = '''# {} counters: {}\\n\\n'''.format(rowtype, index)\n",
 | ||
|     "    html += '## by action\\n\\n'\n",
 | ||
|     "    omatrix = counter.dfcounters[counter.dfcounters['ID'].isin(counterrows)].groupby('Response')\n",
 | ||
|     "    for resp, clist in omatrix:\n",
 | ||
|     "        html += '\\n### {}\\n'.format(resp)\n",
 | ||
|     "        for c in clist.iterrows():\n",
 | ||
|     "            html += '* {}: {} (needs {})\\n'.format(c[1]['ID'], c[1]['Title'],\n",
 | ||
|     "                                                c[1]['Resources needed'])\n",
 | ||
|     "\n",
 | ||
|     "    datafile = '{}/{}counters.md'.format(datadir, oid)\n",
 | ||
|     "    print('Writing {}'.format(datafile))\n",
 | ||
|     "    with open(datafile, 'w') as f:\n",
 | ||
|     "        f.write(html)\n",
 | ||
|     "        f.close()\n",
 | ||
|     "    return(oid, omatrix)\n",
 | ||
|     "\n",
 | ||
|     "\n",
 | ||
|     "def write_resource_markdown(outfile = '../resource_counts.md'):\n",
 | ||
|     "\n",
 | ||
|     "    coltype = 'Response'\n",
 | ||
|     "    rowtype = 'resource'\n",
 | ||
|     "    rowname = 'resource'\n",
 | ||
|     "\n",
 | ||
|     "    html = '''# AMITT {} courses of action\n",
 | ||
|     "\n",
 | ||
|     "<table border=\"1\">\n",
 | ||
|     "<tr>\n",
 | ||
|     "<td> </td>\n",
 | ||
|     "'''.format(rowtype)\n",
 | ||
|     "\n",
 | ||
|     "    # Table heading row\n",
 | ||
|     "    colvals = counter.dfcounters[coltype].value_counts().sort_index().index\n",
 | ||
|     "    for col in colvals:\n",
 | ||
|     "        html += '<td>{}</td>\\n'.format(col)\n",
 | ||
|     "    html += '<td>TOTALS</td></tr><tr>\\n'\n",
 | ||
|     "\n",
 | ||
|     "    # Data rows\n",
 | ||
|     "    datadir = '../{}'.format(rowname)\n",
 | ||
|     "    if not os.path.exists(datadir):\n",
 | ||
|     "        os.makedirs(datadir)\n",
 | ||
|     "    for index in counter.idresource['Res'].value_counts().sort_index().index:\n",
 | ||
|     "        (oid, omatrix) = create_resource_file(index, rowtype, datadir) #self\n",
 | ||
|     "        row = pd.DataFrame(omatrix.apply(len), index=colvals).fillna(' ')\n",
 | ||
|     "        html += '<td><a href=\"{0}/{1}counters.md\">{2}</a></td>\\n'.format(\n",
 | ||
|     "            rowname, oid, index)\n",
 | ||
|     "        if len(row.columns) > 0:\n",
 | ||
|     "            for val in row[0].to_list():\n",
 | ||
|     "                html += '<td>{}</td>\\n'.format(val)\n",
 | ||
|     "        html += '<td>{}</td></tr>\\n<tr>\\n'.format('')\n",
 | ||
|     "\n",
 | ||
|     "    html += '</tr>\\n</table>\\n'           \n",
 | ||
|     "\n",
 | ||
|     "    with open(outfile, 'w') as f:\n",
 | ||
|     "        f.write(html)\n",
 | ||
|     "        print('updated {}'.format(outfile))\n",
 | ||
|     "\n",
 | ||
|     "    return\n",
 | ||
|     "\n",
 | ||
|     "write_resource_markdown()"
 | ||
|    ]
 | ||
|   },
 | ||
|   {
 | ||
|    "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.7.3"
 | ||
|   }
 | ||
|  },
 | ||
|  "nbformat": 4,
 | ||
|  "nbformat_minor": 2
 | ||
| }
 | 
