gpt4 book ai didi

python - 通过另一个索引或值过滤 DataFrame 索引

转载 作者:行者123 更新时间:2023-12-01 01:11:45 25 4
gpt4 key购买 nike

我有一个多索引数据框,如下所示:

                             status      value
id country
1234 US Complete 54
2345 US Ongoing 3
UK Complete 343
JP Complete 54
IT Complete 32
3456 CA Ongoing 20
UK Complete 123
FR Complete 245

我不知道如何制作它,以便我可以通过其他索引(国家/地区)中是否存在字段或其中一个值来过滤 ID 列。

本质上,如果我想要所有不包含“US”的索引的所有列,并且可以得到如下所示的结果,那就太好了:

                             status      value
id country
3456 CA Ongoing 20
UK Complete 123
FR Complete 245

或者另外可以说“过滤掉至少有 1 个状态为正在进行的每个 ID”并取回:

                             status      value
id country
1234 US Complete 54

最终我希望能够将其结合起来,但学习如何单独完成每个操作可能是一个很好的第一步。

最佳答案

您的第二个问题否正在进行

sliceidx=~df.index.get_level_values(0).isin(df.loc[df.status=='Ongoing'].index.get_level_values(0))
df[sliceidx]
Out[474]:
status value
id country
1234 US Complete 54

您的第一个问题不是美国

sliceidx=df.index.get_level_values(0)[df.index.get_level_values(1)=='US']
df[~df.index.get_level_values(0).isin(sliceidx)]
Out[478]:
status value
id country
3456 CA Ongoing 20
UK Complete 123
FR Complete 245
<小时/>

更多信息:我通常做的是reset_index

df1=df.copy().reset_index()
df[df1.country.ne('US').groupby(df1['id']).transform('all').values]
Out[486]:
status value
id country
3456 CA Ongoing 20
UK Complete 123
FR Complete 245

df[df1.status.ne('Ongoing').groupby(df1['id']).transform('all').values]
Out[487]:
status value
id country
1234 US Complete 54

关于python - 通过另一个索引或值过滤 DataFrame 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54792336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com