我有一个数据框,其值分组如下:
import pandas
A = pandas.DataFrame([['a',0],['b',1],['ba',1],['c',2],['cd',2],columns=['value','group'],index=[22,23,11,12,13])
A
Out[28]:
value group
22 a 0
23 b 1
11 ba 1
12 c 2
13 cd 2
我跟踪有关组的行号:
current_row_index = 1
current_group = A['group'].values[current_row_index]
current_group
Out[31]: 1
现在,我想跳到与下一组相对应的行号。我知道我可以通过将pandas数据框转换为列表来做到这一点:
list(A['group']==current_group+1).index(True)
Out[32]: 3
我很想在不同的数据类型pandas.DataFrame
和list
之间跳转,因此我想找到一种pandas
的方法来查找与下一个行号相对应的第一个行号组。
答案 0 :(得分:1)
import pandas as pd
from datetime import datetime
A = pd.DataFrame([['a',0],['b',1],['ba',1],['c',2],['cd',2]],columns=['value','group'],index=[22,23,11,12,13])
A = A.reset_index()
def get_first_row_index(g):
g['first_index'] = g.index.values.tolist()[0]
return g
A = A.groupby('group').apply(lambda g: get_first_row_index(g))
OUT
index value group first_index
0 22 a 0 0
1 23 b 1 1
2 11 ba 1 1
3 12 c 2 3
4 13 cd 2 3
答案 1 :(得分:1)
以您的示例为例,我假设您需要行号(而不是行索引)。
您可以使用numpy
:
current_group = 1
indices = np.where(A.group == current_group+1)[0]
输出:
array([3, 4], dtype=int64)