you are comparing a pandas series to a list, what pandas understands is that you want to get a mask of values equality item by item with the list, so it requires the list to be the same length as the pandas series object, to find out if the string is one of the following (or has substring of them),
try this instead:
df[(df.year == 2013) & (df.country.str.conatins('|'.join(['US', 'FR', 'ES']))]
UPDATE
the other answer by @azro is more relevant because it checks equality instead of contain, so... at least I have tried :)