【问题标题】:pass both string and list to pandas .isin method将字符串和列表都传递给 pandas .isin 方法
【发布时间】:2020-11-19 12:17:52
【问题描述】:

我正在尝试将字符串和列表都传递给 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' ,‘君’” 它可以传递给我的语法,如果它是:'APR'、'JUL'、'NOV'、'MAR'、'FEB'、'AUG'、'SEP'、'OCT'、'JAN'、'DEC' , '五月', '六月'

任何帮助以最好的方式实现这一点?

【问题讨论】:

    标签: python pandas string list isin


    【解决方案1】:

    你可以用isinstance检查元素是否为列表:

    for mon in overall_months:
        if not isinstance(mon, list): mon = [mon]
        tmp_df = df.month.isin(mon)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2019-10-06
      • 2012-10-11
      • 2013-03-31
      相关资源
      最近更新 更多