将字符串和列表都传递给 pandas .isin 方法

pass both string and list to pandas .isin method

我正在尝试将字符串和列表传递给 pandas .isin() 方法。下面是我的代码

    overall_months = ['APR', 'JUL', 'NOV', 'MAR', 'FEB', 'AUG', 'SEP', 'OCT', 'JAN', 'DEC', 'MAY', 
    'JUN', ['APR', 'JUL', 'NOV', 'MAR', 'FEB', 'AUG', 'SEP', 'OCT', 'JAN', 'DEC', 'MAY', 'JUN']]

    for mon in overall_months:
        temp_df = df.month.isin([[mon]]))

这里的问题是 .isin([]) 对于字符串的每次迭代都很好,但是当我到达 overall_months[-1] 时,它是一个列表,你不能将列表传递给.isin([]) 语法。我试过这个但不能删除双引号,因为我的理解是字符串是不可变的:

    str(overall_months[-1]).replace('[', '').replace(']','')

这会产生:“'APR'、'JUL'、'NOV'、'MAR'、'FEB'、'AUG'、'SEP' , 'OCT', 'JAN', 'DEC', 'MAY', 'JUN'" 它可以传递给我的语法,如果它是:'APR'、'JUL'、'NOV'、'MAR'、'FEB'、'AUG'、'SEP', 'OCT', 'JAN', 'DEC', 'MAY', 'JUN'

有没有关于完成此任务的最佳方法的帮助?

您可以通过 isinstance:

检查元素是否为列表
for mon in overall_months:
    if not isinstance(mon, list): mon = [mon]
    tmp_df = df.month.isin(mon)