Python 获取数据帧中不同ID的行值
我对xlsx文件中的某些ID进行了筛选。将它们转换为数据帧。 ID总数为3。 其中,xlsx文件中的Id1有5行值 Id2有3行值 ID3有19行值 在第一步中,我只为每个Id提取了一个行值。在我的例子中,行值是时间,在%H:%M:%S.%f中,它对于每个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:
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