elz*_*elz 4 python dataframe pandas
我试图使用类似于以下的多索引过滤数据帧.
import numpy as np
import pandas as pd
data = pd.DataFrame(np.random.rand(8),
index=[list('AABBCCDD'),
['M', 'F']*4])
data['Count'] = [1,2,15,17,8,12,11,20]
Run Code Online (Sandbox Code Playgroud)
我想选择所有的行,其中"计数"为两个 "M"和"F"的给定外水平索引内是大于10因此对于例如数据帧,所有"B"和"d"的行应选择,但没有其他行.我能想到的唯一方法就是循环遍历外部索引,但是因为大熊猫中的循环几乎从不是做事的最佳方式,我认为必须有更好的解决方案.
groupbyindex然后我们使用filter+ all来获得比thresh更多的所有计数
data.groupby(level=0).filter(lambda x : x['Count'].gt(10).all())
Out[495]:
0 Count
B M 0.232856 15
F 0.536026 17
D M 0.375064 11
F 0.795447 20
Run Code Online (Sandbox Code Playgroud)
灵感来自Jpp使用 isin
s=data.Count.min(level=0).gt(10)
data.loc[data.index.get_level_values(0).isin(s[s].index)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |