我正在使用一个由数字列表组成的Pandas系列,其中以单词作为索引:
$10 [1, 0, 1, 1, 1, 1, 1]
$100 [0, 0, 0]
$15 [1]
$19 [0, 0]
$1? [1, 1]
$20 [0, 1, 1]
$20-$40 [0]
我正在尝试编写一些简单的代码来创建一个新系列,其中只包含一个包含长度为'n'或更长的列表的项目。
有点像系列列表理解。
感谢您的帮助
答案 0 :(得分:2)
您应避免在list
个对象中使用Series
,但您可以按照以下方式执行此操作:
编辑:用法
# DON'T use `eval` in production I'm just using it for convenience here
In [7]: s = read_clipboard(sep=r'\s{2,}', index_col=0, header=None, squeeze=1).map(eval)
In [8]: s
Out[8]:
0
$10 [1, 0, 1, 1, 1, 1, 1]
$100 [0, 0, 0]
$15 [1]
$19 [0, 0]
$1? [1, 1]
$20 [0, 1, 1]
$20-$40 [0]
In [20]: n = 3
In [21]: s.map(len) >= n
Out[21]:
0
$10 True
$100 True
$15 False
$19 False
$1? False
$20 True
$20-$40 False
Name: 1, dtype: bool
In [22]: s[s.map(len) >= n]
Out[22]:
0
$10 [1, 0, 1, 1, 1, 1, 1]
$100 [0, 0, 0]
$20 [0, 1, 1]
Name: 1, dtype: object
您不应在list
个对象中使用Series
,因为它们是object
阵列,而不是可以利用Series
的同类型numpy
{{1}}的速度。
答案 1 :(得分:1)
试试这个:
s[s.map(len) >= n]