当值为“列表”时,“pandas.Series.str”如何工作?
How `pandas.Series.str` works when values are `list`?
这是如何运作的?如果它将每个项目转换为字符串,我应该得到第一个字符,如 "[1,2]"[0]
----> '['
但它却被视为 list
,如何?
>>> df = pd.DataFrame({'a':[[1,2],[2,3]]})
>>> df.a.str[0]
0 1
1 2
Name: a, dtype: int64
它有效,因为 string
s 和 list
s 是可迭代的。这意味着 .str[0]
return 字符串的第一个值,列表的第一个值,可迭代的第一个值。
什么是iterable
:
一个ITERABLE是:
- 任何可以循环的东西(即你可以循环一个字符串或文件)或
- 任何可以出现在 for 循环右侧的东西:
for x in iterable: ...
或
- 任何你可以用
iter()
调用的东西,它将 return 一个 ITERATOR:iter(obj)
或
- 一个定义
__iter__
的对象,return 是一个新的 ITERATOR,
或者它可能有一个适合索引查找的 __getitem__
方法。
这是如何运作的?如果它将每个项目转换为字符串,我应该得到第一个字符,如 "[1,2]"[0]
----> '['
但它却被视为 list
,如何?
>>> df = pd.DataFrame({'a':[[1,2],[2,3]]})
>>> df.a.str[0]
0 1
1 2
Name: a, dtype: int64
它有效,因为 string
s 和 list
s 是可迭代的。这意味着 .str[0]
return 字符串的第一个值,列表的第一个值,可迭代的第一个值。
什么是iterable
:
一个ITERABLE是:
- 任何可以循环的东西(即你可以循环一个字符串或文件)或
- 任何可以出现在 for 循环右侧的东西:
for x in iterable: ...
或 - 任何你可以用
iter()
调用的东西,它将 return 一个 ITERATOR:iter(obj)
或 - 一个定义
__iter__
的对象,return 是一个新的 ITERATOR, 或者它可能有一个适合索引查找的__getitem__
方法。