从 pandas 索引中查找整数行索引
Find integer row-index from pandas index
以下代码查找 df['A'] == 1
处的索引
import pandas as pd
import numpy as np
import random
index = range(10)
random.shuffle(index)
df = pd.DataFrame(np.zeros((10,1)).astype(int), columns = ['A'], index = index)
df.A.iloc[3:6] = 1
df.A.iloc[6:] = 2
print df
print df.loc[df['A'] == 1].index.tolist()
它 returns pandas 索引正确。如何获取整数索引 ([3,4,5]) 而不是使用 pandas API?
A
8 0
4 0
6 0
3 1
7 1
1 1
5 2
0 2
2 2
9 2
[3, 7, 1]
不需要numpy,你是对的。只是纯 python 与 listcomp:
只需找到值为 1 的索引
print([i for i,x in enumerate(df['A'].values) if x == 1])
这是一种方法:
df.reset_index().index[df.A == 1].tolist()
这用 [0, 1, 2, ...]
重新索引数据帧,然后根据布尔掩码 df.A == 1
.
提取整数索引值
编辑 感谢@Max 的 index[df.A == 1]
想法。
怎么样?
In [12]: df.index[df.A == 1]
Out[12]: Int64Index([3, 7, 1], dtype='int64')
或(取决于您的目标):
In [15]: df.reset_index().index[df.A == 1]
Out[15]: Int64Index([3, 4, 5], dtype='int64')
演示:
In [11]: df
Out[11]:
A
8 0
4 0
6 0
3 1
7 1
1 1
5 2
0 2
2 2
9 2
In [12]: df.index[df.A == 1]
Out[12]: Int64Index([3, 7, 1], dtype='int64')
In [15]: df.reset_index().index[df.A == 1]
Out[15]: Int64Index([3, 4, 5], dtype='int64')
以下代码查找 df['A'] == 1
处的索引import pandas as pd
import numpy as np
import random
index = range(10)
random.shuffle(index)
df = pd.DataFrame(np.zeros((10,1)).astype(int), columns = ['A'], index = index)
df.A.iloc[3:6] = 1
df.A.iloc[6:] = 2
print df
print df.loc[df['A'] == 1].index.tolist()
它 returns pandas 索引正确。如何获取整数索引 ([3,4,5]) 而不是使用 pandas API?
A
8 0
4 0
6 0
3 1
7 1
1 1
5 2
0 2
2 2
9 2
[3, 7, 1]
不需要numpy,你是对的。只是纯 python 与 listcomp:
只需找到值为 1 的索引
print([i for i,x in enumerate(df['A'].values) if x == 1])
这是一种方法:
df.reset_index().index[df.A == 1].tolist()
这用 [0, 1, 2, ...]
重新索引数据帧,然后根据布尔掩码 df.A == 1
.
编辑 感谢@Max 的 index[df.A == 1]
想法。
怎么样?
In [12]: df.index[df.A == 1]
Out[12]: Int64Index([3, 7, 1], dtype='int64')
或(取决于您的目标):
In [15]: df.reset_index().index[df.A == 1]
Out[15]: Int64Index([3, 4, 5], dtype='int64')
演示:
In [11]: df
Out[11]:
A
8 0
4 0
6 0
3 1
7 1
1 1
5 2
0 2
2 2
9 2
In [12]: df.index[df.A == 1]
Out[12]: Int64Index([3, 7, 1], dtype='int64')
In [15]: df.reset_index().index[df.A == 1]
Out[15]: Int64Index([3, 4, 5], dtype='int64')