首页 > 解决方案 > 在作为列表的 pandas 的索引列中查找值

问题描述

假设我有一个如下的数据框

d = {'col1': [1, 2,4,5,6], 'col2': [3, 4,5,6,7], 'col3': ['foo', 'bar', 'baz','biz', 'boo'],
    'col4': [['foo', 'bar'], ['baz'], ['foo'], ['biz'], ['baz', 'foo']]
}    

df = pd.DataFrame(data=d) 
df.head()

   col1  col2 col3        col4
0     1     3  foo  [foo, bar]
1     2     4  bar       [baz]
2     4     5  baz       [foo]
3     5     6  biz       [biz]
4     6     7  boo  [baz, foo]

假设我索引第 4 列

indexed_df = df.set_index('col4')  
 indexed_df                                                                                                                                                                                                                                                                 
Out[42]: 
            col1  col2 col3
col4                       
[foo, bar]     1     3  foo
[baz]          2     4  bar
[foo]          4     5  baz
[biz]          5     6  biz
[baz, foo]     6     7  boo

如何在索引中设置值。说.. 在 col4 中搜索“baz”?谢谢

标签: pythonpandas

解决方案


使用Index.mapwithin语句:

df1 = indexed_df[indexed_df.index.map(lambda x: 'baz' in x)]
print (df1)
            col1  col2 col3
col4                       
[baz]          2     4  bar
[baz, foo]     6     7  boo

列表理解的替代方法:

df1 = indexed_df[['baz' in x for x in indexed_df.index]]

推荐阅读