python-如何有条件地从pandas系列中选择项目

我正在使用由数字列表组成的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’或更大的列表的项目.

有点像系列的列表理解.

谢谢你的帮助

解决方法:

您应该避免在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

您不应该在Series对象中使用列表,因为它们是幕后的对象数组,而不是可以利用numpy速度的同类类型Series.

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...