tag这是一个带有索引和 的MultiIndex 数据透视表uom。tag我的目标是使用正则表达式和过滤函数按索引过滤行。例如:
df.filter(regex="^Assets$", axis="index")
理想情况下会过滤掉该行:
fy 2018 2019 tag uom Assets USD 3.753190e+11 3.385160e+11
但是,当我这样做时,它会输出一个空数据框:
Empty DataFrame Columns: [2018, 2019] Index: []
我能够通过使用来规避这个问题:
df.index.get_level_values("tag").str.contains("^Assets$")
或者作为一个函数
search = lambda df, regex, index_name: df.loc[df.index.get_level_values(index_name).str.contains(regex)]
但这对我来说不太令人满意。我是否遗漏了有关 pandas 过滤器功能及其正则表达式输入如何工作的信息?它没有按预期运行,我的猜测是因为我有 2 个索引:tag因此当我用作我的正则表达式时uom,正则表达式在索引中失败。uom"^Assets$""^Assets$|USD"这是通过使用返回整个数据帧的正则表达式来支持的,因为所有行都有uom=USD,并且它表明过滤器函数将两个索引都考虑在内。如果是这种情况,那么我如何有选择地tag为 MultiIndex 数据帧上的过滤器函数选择 index= ?
呼如林
白衣非少年
炎炎设计
守候你守候我
随时随地看视频慕课网APP
相关分类