Python “字符串”;包括「-基于多索引的切片
如何根据多索引的字符串内容对其进行切片?即,该特定索引是否包含某个字符串Python “字符串”;包括「-基于多索引的切片,python,pandas,Python,Pandas,如何根据多索引的字符串内容对其进行切片?即,该特定索引是否包含某个字符串 In [12]: df = pd.DataFrame({'a': ['a', 'ab', 'b'], 'c': ['d', 'd', 'd'], 'val': [1, 2 , 3]}).set_index(['a', 'c']) In [13]: df Out[13]: val a c a d 1 ab d 2 b
In [12]: df = pd.DataFrame({'a': ['a', 'ab', 'b'],
'c': ['d', 'd', 'd'],
'val': [1, 2 , 3]}).set_index(['a', 'c'])
In [13]: df
Out[13]:
val
a c
a d 1
ab d 2
b d 3
In [15]: df.xs('a', level='a', drop_level=False)
Out[15]:
val
a c
a d 1
In[16]: df.xs(contains('a'), level='a', drop_level=False)
预期产出:
Out[16]:
a c
a d 1
ab d 2
显然,最后一点是不可能的
- 如何才能做到优雅
- 你能不能用一些不区分大小写的方法
df.filter(…)
与正则表达式一起使用;在按列或行浏览数据时非常有用。例如,这将以更少的代码给出相同的答案:
df.filter(regex=re.compile('A',re.I),axis=0)
但是,这在所有索引级别进行过滤,df.filter(regex=re.compile('D',re.I),axis=0)
将查看索引“c”,并显示以下内容:
另一种方法是使用:
DataFrame的DataFrame.index和DataFrame.columns属性
默认情况下,实例放置在查询命名空间中,这允许
您需要将框架的索引和列都视为中的列
框架
哪个IMO比其他IMO更具可读性和简洁性
>>> df[df.index.get_level_values('a').str.contains('a')]
谢谢相当多的…
>>> df.query('a.str.contains("a")')
val
a c
a d 1
ab d 2
>>> df[df.index.get_level_values('a').str.contains('a')]