2013-08-27 2 views
1

У меня есть панды DataFrame, который выглядит примерно так:Выберите панды строки на основе значения списка

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 1072 entries, 0 to 1071 
Data columns (total 10 columns): 
city   1072 non-null values 
latitude  1072 non-null values 
longitude  1072 non-null values 
manufacturer 1072 non-null values 
name   1072 non-null values 
offering  1072 non-null values 
platformID  1072 non-null values 
procedure  1072 non-null values 
properties  1072 non-null values 
sensorID  1072 non-null values 
dtypes: object(10) 

properties список строковых значений:

df_devices.head(1).properties 
Out[79]: 0 [urn:average_wind, urn:dew_point] 

Я хотел бы, чтобы выбрать записи, только содержат запись «urn: dew_point», но я не уверен, как их фильтровать (используя isin или альтернативу)

ответ

3

Вы можете просто использовать apply, чтобы сделать это s:

In [11]: df = pd.DataFrame([[['urn:dew_point'], 1]], columns=['properties', 'id']) 

In [12]: df 
Out[12]: 
     properties id 
0 [urn:dew_point] 1 

In [13]: df[df['properties'].apply(lambda x: 'urn:dew_point' in x)] 
Out[13]: 
     properties id 
0 [urn:dew_point] 1 

Если бы это было просто частью колонки строки можно использовать str.contains:

In [21]: df = pd.DataFrame([['urn:dew_point', 1]], columns=['properties', 'id']) 

In [22]: df['properties'].str.contains('urn:dew_point') 
Out[22]: 
0 True 
Name: properties, dtype: bool 

In [23]: df[df['properties'].str.contains('urn:dew_point')] 
Out[23]: 
     properties id 
0 urn:dew_point 1 
Смежные вопросы