Python 获取数据帧中不同ID的行值

Python 获取数据帧中不同ID的行值,python,pandas,dataframe,Python,Pandas,Dataframe,我对xlsx文件中的某些ID进行了筛选。将它们转换为数据帧。 ID总数为3。 其中,xlsx文件中的Id1有5行值 Id2有3行值 ID3有19行值 在第一步中,我只为每个Id提取了一个行值。在我的例子中,行值是时间,在%H:%M:%S.%f中,它对于每个Id都是唯一的 我的数据框架如下所示: import pandas as pd df = pd.DataFrame([['Id1','01:22:52.134'],['Id2','03:21:31.123'], ['Id1','21:12:

我对xlsx文件中的某些ID进行了筛选。将它们转换为数据帧。 ID总数为3。 其中,xlsx文件中的Id1有5行值 Id2有3行值 ID3有19行值

在第一步中,我只为每个Id提取了一个行值。在我的例子中,行值是时间,在%H:%M:%S.%f中,它对于每个Id都是唯一的

我的数据框架如下所示:

import pandas as pd 
df = pd.DataFrame([['Id1','01:22:52.134'],['Id2','03:21:31.123'],  ['Id1','21:12:52.544'],['Id3','23:12:31.216'],['Id1','10:22:02.134'],['Id2','06:52:48.184'], ['Id3','12:52:46.188'], ['Id3','06:52:46.184'], ['Id1','13:33:46.235'], ['Id2','14:35:12.235'], ['Id3','14:59:12.177']], columns=["Ids",'Time'])
我的要求是: 我想提取所选ID的行值,但不是所有行值。 e、 g:-1 Id1的行值最初包含5 -Id2的2行值最初包含3
-Id3的17行值最初包含19个,我建议使用groupby+pd.concat来实现这一点。首先,您需要一个映射:

mapping = {'Id1' : 1, 'Id2' : 2, 'Id3' : 17}
现在,使用mapping使用GroupBy.head仅获取所需数量的行:


我建议使用groupby+pd.concat进行此操作。首先,您需要一个映射:

mapping = {'Id1' : 1, 'Id2' : 2, 'Id3' : 17}
现在,使用mapping使用GroupBy.head仅获取所需数量的行:

使用:

说明:

首先创建映射字典 最后一个和每个筛选组使用字典映射的值 使用:

说明:

首先创建映射字典 最后一个和每个筛选组使用字典映射的值
我不知道你是否理解我的问题,但这是我的尝试。def extractfeaturessh:vals=sh.row_range中r的值sh.nrows:while valsr,TimeList中的0[1]:if valsr,0[0]=“id1”:col1=valsr,0[3]if valsr,0[0]=“id2”:col2=[valsr,0[3],valsr,0[0]==col3=[valsr,0[i]对于范围为3,19]data=[col1,col2,col3]的i返回数据我不知道你是否理解我的问题,但这是我的尝试。def extractfeaturessh:vals=sh.row_range中r的值sh.nrows:while valsr,TimeList中的0[1]:if valsr,0[0]=“id1”:col1=valsr,0[3]if valsr,0[0]=“id2”:col2=[valsr,0[3],valsr,0[0]==col3=[valsr,0[i]对于范围为3,19]的i,数据=[col1,col2,col3]返回数据
ids = {'Id1':1, 'Id2':2, 'Id3':17}
df = df.groupby('Ids', group_keys=False).apply(lambda x: x.head(ids[x.name]))
print (df)
   Ids          Time
0  Id1  01:22:52.134
1  Id2  03:21:31.123
2  Id2  06:52:48.184
3  Id3  23:12:31.216
4  Id3  12:52:46.188
5  Id3  06:52:46.184
6  Id3  14:59:12.177