Python Pandas List()vs [] isin()

时间:2016-03-30 18:28:16

标签: python pandas

为什么以下两个代码段会产生不同的结果?

import pandas as pd
s = pd.Series(['abc','abcq', 'foo', 'baz'])
s.isin(['abc'])

VS

import pandas as pd
s = pd.Series(['abc','abcq', 'foo', 'baz'])
s.isin(list('abc'))

3 个答案:

答案 0 :(得分:1)

import pandas as pd
s = pd.Series(['abc','abcq', 'foo', 'baz'])
print s.isin(['abc'])

print s.isin(list('abc'))

# why?
print list('abc')

输出:

0     True
1    False
2    False
3    False
dtype: bool
0    False
1    False
2    False
3    False
dtype: bool
['a', 'b', 'c']

答案 1 :(得分:1)

只需查看list的{​​{3}}:

  

class list([ iterable ])
  

返回一个列表,其项目与 iterable 的项目相同且顺序相同。
  ...
   例如,list('abc')返回['a', 'b', 'c']list( (1, 2, 3) )返回[1, 2, 3]

您看到list()何时被赋予'abc',它会返回['a', 'b', 'c'],因为即使字符串也是可迭代的。正如list(('a', 'b', 'c'))变为['a', 'b', 'c']一样,当iterable是字符串时,list()会将字符串拆分为单个字符。但是,使用['abc']创建一个包含一个元素的列表:字符串。

答案 2 :(得分:0)

第一个示例返回一个布尔系列,显示系列中的每个元素是否完全包含在['abc']中。

第二次测试系列中的每个元素是否完全包含在['a', 'b', 'c']这是因为list('abc')产生['a', 'b', 'c']因此 s.isin(list('abc'))s.isin(['a', 'b', 'c'])相同,与s.isin(['abc'])

完全不同