Skip to main content
 首页 » 编程设计

python之Pandas 返回完全匹配的行,其中列可以有多个值

2024年11月01日11dudu

我正试图找到解决这个问题的办法:

import pandas as pd 
 
i = ['7.3, 6.9.1', '7.3.1, 5.10', '6.9'] 
 
s = pd.DataFrame(i, columns=['vals']) 
s[(s["vals"].apply(lambda x: '7.3' in x))] 

这里期望的输出是:

    vals 
0   7.3, 6.9.1 

但是,我得到的输出是:

    vals 
0   7.3, 6.9.1 
1   7.3.1, 5.10 

注意,我需要支持某些版本的 in,因为 vals 中可以有多个值;但是,我需要确保我只取回完全匹配的行,即 7.3 而不是 7.3.1

请您参考如下方法:

mapset.isdisjoint

s[~s.vals.str.split(', ').map({'7.3'}.isdisjoint)] 
 
         vals 
0  7.3, 6.9.1 

splitexpand=Trueany(axis=1)

s[s.vals.str.split(', ', expand=True).eq('7.3').any(1)] 
 
         vals 
0  7.3, 6.9.1 

理解/ bool 切片

s[['7.3' in x.split(', ') for x in s.vals]] 
 
         vals 
0  7.3, 6.9.1