Python- Pandas : get row indices for a particular value in a column

标签 python python-3.x pandas dataframe

给定一个 pandas 数据框,有没有办法获取列具有特定值的行的索引?

考虑以下玩具示例:

CSV(另存为 test1.csv)

id,val1,val2
1,20,A
1,19,A
1,23,B
2,10,B
2,10,A
2,14,A

我目前拥有的是:

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]

有没有一个选项/功能可以给我类似下面的东西? (我希望能够对大值列表执行此操作,快速!)

print(df['id'].someFn([1,2]))

期望的输出:

{1:[0,1,2], 2:[3,4,5]}

最佳答案

尝试groupby:

{k: list(d.index) for k, d in df.groupby('id')}

输出:

{1: [0, 1, 2], 2: [3, 4, 5]}

关于Python- Pandas : get row indices for a particular value in a column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65669445/

相关文章:

python - 通过 Python 节点将字典从 LabVIEW 传递到 Python 脚本

带有可变文本的 Python strptime

python - 使用 Flask 格式化电话号码以进行演示和数据库输入

python - 获取数学函数作为用户输入

Python 和 Dropbox : How to change SmartSync setting for locally created files?

python - 如何关闭 Pandas 数据框图

python - Pandas 元素比较和创建选择

python - 通过 Rauth OAuth 1.0 session 的多个请求

python - pyqt:在 pyqt 中将多个信号连接到同一函数的正确方法(QSignalMapper 不适用)

python - Pandas 数据框 - 运行总和并重置