我有一个很长的系列,如下所示:
series = pd.Series([[(1,2)],[(3,5)],[],[(3,5)]])
In [151]: series
Out[151]:
0 [(1, 2)]
1 [(3, 5)]
2 []
3 [(3, 5)]
dtype: object
我想删除一个空列表的所有条目。由于某些原因,布尔索引无法正常工作。
以下测试均给出相同的错误:
series == [[(1,2)]]
series == [(1,2)]
ValueError: Arrays were different lengths: 4 vs 1
这很奇怪,因为在下面的简单示例中,索引的工作方式与上面相同:
In [146]: pd.Series([1,2,3]) == [3]
Out[146]:
0 False
1 False
2 True
dtype: bool
PS理想情况下,我想将系列中的元组也分成两列的DataFrame。
您可以使用以下命令查看列表是否为空str.len()
:
series.str.len() == 0
然后使用此布尔系列删除包含空列表的行。
如果每个条目都是一个包含两个元组的列表(否则为空),则可以使用str
两次访问器来创建一个两列的DataFrame (一次选择列表的第一个元素,然后访问该元素的元素)元组):
pd.DataFrame({'a': series.str[0].str[0], 'b': series.str[0].str[1]})
默认情况下,缺少项NaN
使用此方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句