繁体   English   中英

在单元格中使用 python 列表过滤 pandas.DataFrame

[英]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)

使用Series.mapSeries.apply

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM