[英]filter pandas.DataFrame with python list in cell
我有這樣的 pasdas.DataFrame:
import pandas as pd
data = {'name' : ['Alice', 'Bob', 'Eve'],
'age' : ['20', '35', '40'],
'stuff' : [['computer', 'phone', 'bike'], ['bike', 'skateboard', 'phone'],
['computer', 'phone', 'skateboard']]}
frame = pd.DataFrame(data)
如何選擇年齡 > 30 且內容包含“計算機”的行?
我試過用 DataFrame.loc 解決這個問題:
filteredFrame = frame.loc[(frame.age > 30)&('computer' in frame.stuff)]
但它不起作用
如有必要,首先將列year
轉換為數字:
frame.age = frame.age.astype(int)
filteredFrame = frame.loc[(frame.age > 30)&(frame.stuff.map(lambda x: 'computer' in x))]
filteredFrame = frame.loc[(frame.age > 30)&(frame.stuff.apply(lambda x: 'computer' in x))]
或列表理解:
filteredFrame = frame.loc[(frame.age > 30)&(['computer' in x for x in frame.stuff])]
print (filteredFrame)
name age stuff
2 Eve 40 [computer, phone, skateboard]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.