我知道这个主题有很好的记录,但我找不到足够好的解决方案。我有一个布尔熊猫系列,myboolseries。我有一个数据帧df。我想根据myboolseries(值为True的索引)过滤df。
myboolseries = pd.Series(data = [True, False, True], index = [2,5,8])
mydic = {"Age" : [14,12,55,22,98], "Name" : ["Pierre", "Mike", "Selena", "Victor", "Jesus"], "index" : [2,14,5,99,8]}
df = pd.DataFrame.from_dict(mydic).set_index("index")
这是我的解决方案(它确实有效),但我正在寻找一种更优雅的方式:
myboolseries = myboolseries[myboolseries].index
df[myboolseries]
尝试:
df.loc[df.index.isin(myboolseries.index)][myboolseries]
Age Name
index
2 14 Pierre
8 98 Jesus
你可以试试这个:
df.reindex(myboolseries.loc[lambda x: x].index)
输出:
Age Name
2 14 Pierre
8 98 Jesus
如果您的布尔系列与DataFrame的长度相同,您可以:
df = df[boolseries]
而已。