Я создал словарь, который связывает цвета со странами:
import matplotlib.pyplot as plt
import pandas as pd
# read csv
df = pd.read_csv('test2.txt', delim_whitespace=True)
# find all unique countries, which shall correspond to a color
countries = df['Country'].unique()
custom_colors = ['r','b','g','orange']
# create a dictionary associating a color to a country
col_dict = {country:custom_colors[i] for i, country in enumerate(countries)}
# extend dataframe by new column with country colors
df['country_colors'] = [col_dict[country] for country in df['Country']]
# plot scatteplot while using c= as a container for colors.
# This is what makes scatter special: color argument can be a container
# of many different colors
fig, ax = plt.subplots(figsize=(7,4))
X,Y,col = df['average_man'], df['Country'], df['country_colors']
ax.scatter(X,Y,c=col)
Комментарии моего кода должны объяснить все.Но общая идея состоит в том, чтобы найти все уникальные страны, связать цвет со всеми уникальными странами, а затем добавить новый столбец в DataFrame с правильными цветами в правильных позициях: например, все строки с 'I1' имеют цвет 'r' вфрейм данных.