Skip to main content
 首页 » 编程设计

python之在 pandas 的列上按 `df.str.split` 过滤行

2025年05月04日22dflying

我有一个如下所示的 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