我有一个如下所示的 DataFrame
url1, labela:0.5
url2, labelb:0.4
url3, labelc:0.7
我正在尝试执行以下操作,将标签列拆分为“:”并按数值过滤,比如大于 0.6。在上述情况下,过滤掉具有 url1 和 url2 的行,因为值分别为 0.5 和 0.4。
我做了以下操作,但这行不通:
df = df[df["labels"].str.split(':').get(1).astype('float') >= 0.6]
我想发生的事情是 get(1) 会给我第二行,而不是拆分后我想象的第二列。我也尝试了很多变体,但没有用。我希望这能说明我的想法。执行此操作的优雅方法是什么?
谢谢。
请您参考如下方法:
您可以使用 df.str.split(..., expand=True),然后使用 df.astype 和 boolean 索引进行类型转换以 float :
In [782]: df[df['labels'].str.split(':', expand=True)[1].astype(float) >= 0.6]
Out[782]:
url labels
2 url3 labelc:0.7
