问题描述
我实际上知道很多方法可以在 Pandas Dataframe 和 Series 中使用像 float
这样的 dtype,但是如何使它与包含 dtype list
的 Series 一起使用?
例如,我想:
series = pd.Series([[1,2],[2,3,4],[4,6]])
series
就像:
0 [1,2]
1 [2,4]
2 [4,6]
dtype: object
我想要长度大于 2 的行,这实际上是行 1
。我试过了:
series[len(series) > 2]
和
series[series.apply(lambda x : len(x) > 1)]
两者都不起作用。
解决方法
列表列支持 .str
访问器方法,因为它们本质上是对象。试试
series[series.str.len() > 2]
1 [2,3,4]
dtype: object
如果需要满足条件的行的索引值,我们改为过滤索引:
series.index[series.str.len() > 2]
# Int64Index([1],dtype='int64')
或者,如果您想删除长度大于 2 的行,您可以使用布尔索引来过滤:
series[series.str.len() <= 2]
0 [1,2]
2 [4,6]
dtype: object
请注意,您的第一个解决方案没有意义,因为条件是标量,但除非您的列也有 NaN,len(x) > 2
解决方案可以正常处理,否则您的应用代码将适用于 .str
.
enter image description here 系列主要用于 str 因为访问器方法。这就是 str 在系列中使用的原因
series[series.apply(lambda x :len(x) > 2)][enter image description here][1]