将字符串和列表都传递给 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)
我正在尝试将字符串和列表传递给 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)