0

我正在尝试将字符串和列表都传递给 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([]) 对字符串的每次迭代都很好,但是当我到达 general_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'、'十二月','五月','六月'

以最佳方式完成此任务的任何帮助?

4

1 回答 1

1

您可以检查该元素是否是一个列表isinstance

for mon in overall_months:
    if not isinstance(mon, list): mon = [mon]
    tmp_df = df.month.isin(mon)
于 2020-07-29T20:02:13.537 回答