2016-09-23 66 views
1

通過在細胞內尋找單個元素來切片的最佳方法是什麼?我知道如何用單元素在列表中的.isin()函數來做到這一點。但我實際上是尋找反:熊貓根據細胞中的元素切片

id  vals 
1  ['wow', 'very', 'such'] 
2  ['wow', 'such'] 
3  ['very', 'such'] 

我想是這樣的(但不工作):

df['very' in df['vals']] 

id  vals 
1  ['wow', 'very', 'such'] 
3  ['very', 'such'] 

我覺得一個替代方案是使用適用(),匹配上的價值,但它似乎有點不雅。

+0

你想匹配包含字符串'delivery'(其中'很'是一個子字符串)? – MaxU

回答

2

一個list-comprehension選擇哪隻包含字符串行非常可用於:

df[['very' in x for x in df['vals'].values]] 

Image

1
df[df.vals.apply(lambda x: 'very' in x)] 
Out[9]: 
       vals 
0 [wow, very, such] 
2  [very, such] 
+1

PS:所有對OP編輯的評論的應有的尊重,熊貓中的不雅行爲可能會在數據框中存儲列表對象。要考慮的一個選擇是將列表拆分成列並使用它。在此期間,申請不是不典型 – Boud

+0

感謝您的意見。如果可能的單詞列表在10,000秒內,該怎麼辦? – eljusticiero67

+0

你有10000個專欄,那會是什麼問題? – Boud