[英]Python - Pandas: get row indices for a particular value in a column
Given a pandas dataframe, is there a way to get the indices of rows where a column has particular values?给定 pandas dataframe,有没有办法获取列具有特定值的行的索引?
Consider the following toy example:考虑以下玩具示例:
CSV ( save as test1.csv ) CSV (另存为test1.csv )
id,val1,val2
1,20,A
1,19,A
1,23,B
2,10,B
2,10,A
2,14,A
What I currently have is this:我目前拥有的是这样的:
import pandas as pd
df = pd.read_csv('test1.csv')
print(df)
print(df[df['id']==1].index.to_list())
print(df[df['id']==2].index.to_list())
id val1 val2
0 1 20 A
1 1 19 A
2 1 23 B
3 2 10 B
4 2 10 A
5 2 14 A
[0, 1, 2]
[3, 4, 5]
Is there an option/functionality that can give me something like the following?是否有一个选项/功能可以给我类似以下的东西? (I want to be able to do this for large value lists, fast !) (我希望能够快速为大型值列表执行此操作!)
print(df['id'].someFn([1,2]))
Desired output:所需的 output:
{1:[0,1,2], 2:[3,4,5]}
Try groupby
:尝试groupby
:
{k: list(d.index) for k, d in df.groupby('id')}
Output: Output:
{1: [0, 1, 2], 2: [3, 4, 5]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.