gpt4 book ai didi

python - 获取数据框中不同 ID 的行值

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:25 26 4
gpt4 key购买 nike

我对 xlsx 文件中的某些 ID 进行了过滤。将它们转换为数据框。id 总数为 3。其中 Id1(在 xlsx 文件中)有 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 的行值,但不是所有行值。例如:- Id1 的 1 行值(最初包含 5) - Id2 的 2 行值(最初包含 3) - Id3 的 17 行值(最初包含 19)

最佳答案

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

mapping = {'Id1' : 1, 'Id2' : 2, 'Id3' : 17}

现在,使用 mapping 通过 GroupBy.head 仅获取所需的行数:

pd.concat(
[g.head(mapping[k]) for k, g in df.groupby('Ids')], axis=0
)

Ids Time
0 Id1 01:22:52.134
1 Id2 03:21:31.123
5 Id2 06:52:48.184
3 Id3 23:12:31.216
6 Id3 12:52:46.188
7 Id3 06:52:46.184
10 Id3 14:59:12.177

关于python - 获取数据框中不同 ID 的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com