我有一个由openstreetmap数据生成的geodataframe。我对其中一个列有一个问题,它返回object
的dtype
,包含字符串和列表的混合,如下面的highway
列所示。在
access geometry highway
0 NaN LINESTRING (-10817.60510122531 6680340.0880667... footway
1 no LINESTRING (-11843.46986863073 6678698.1663396... footway
2 no LINESTRING (-11843.46986863073 6678698.1663396... [footway, steps]
3 no LINESTRING (-11843.46986863073 6678698.1663396... footway
4 NaN LINESTRING (-9727.497855683101 6679963.0804682... unclassified
我试图获取highway
列的唯一值,但是unique()
函数返回TypeError: unhashable type: 'list'
错误。我理解为什么会发生这种情况,但我不确定如何真正获得唯一值。我在考虑按单元格数据类型过滤数据帧,类似于
dfMultitags = df[type(df['highway']) == type(list()]
但我似乎也找不到办法。欢迎有任何想法。在
编辑: 这个问题与包含不规则列表的pandas列有关,来自Group operations on Pandas column containing lists的解决方案在这里并不适用。答案是将列表转换为元组。在我的案例中,结果如下:
^{pr2}$理想情况下,我希望将初始数据帧拆分为两个数据帧,一个包含list
类型的所有单元格,另一个包含具有str
值的所有单元格。在
您可以使用
astype
转换为str
,然后使用duplicated
来自@chrisz的数据您可以使用
apply()
只将列表转换为元组,而其余部分保持不变,然后调用unique()
:如果将
tuple()
应用于整个列,则它将字符串转换为每个字符的元组。在相关问题 更多 >
编程相关推荐