You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Pandas DataFrame中不同ID对应的行值?

获取DataFrame中不同ID对应的时间行值

嘿,看起来你需要从包含重复ID的DataFrame里提取每个唯一ID对应的时间数据对吧?这里有几个实用的方法,结合你的示例来演示:

首先先把你的示例DataFrame补全(方便测试):

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','05:45:12.789'],  # 补充的示例行
    ['Id2','10:30:45.678'],  # 补充的示例行
    ['Id3','08:15:30.456']   # 补充的示例行
], columns=['ID', 'Time'])

方法1:获取每个ID的所有时间记录

如果你想保留每个ID对应的全部时间行,可以用groupby把时间打包成列表:

# 按ID分组,将每个ID的所有时间存入列表
id_all_times = df.groupby('ID')['Time'].apply(list).reset_index()
print(id_all_times)

输出结果会是:

ID                                            Time
0  Id1  [01:22:52.134, 21:12:52.544, 05:45:12.789]
1  Id2               [03:21:31.123, 10:30:45.678]
2  Id3               [23:12:31.216, 08:15:30.456]

方法2:提取每个ID的单条时间记录

如果你只需要每个ID的第一条/最后一条时间,用drop_duplicates就很方便:

# 获取每个ID的第一条时间记录
id_first_time = df.drop_duplicates(subset='ID', keep='first')
# 或者获取最后一条:id_last_time = df.drop_duplicates(subset='ID', keep='last')
print(id_first_time)

输出结果:

ID          Time
0  Id1  01:22:52.134
1  Id2  03:21:31.123
3  Id3  23:12:31.216

方法3:获取每个ID的唯一时间值(去重后)

如果你的数据里某个ID可能有重复的时间,想要去重后的结果,可以用unique:

id_unique_times = df.groupby('ID')['Time'].unique().reset_index()
print(id_unique_times)

这个方法会自动剔除每个ID下重复的时间值,返回唯一的时间列表。


内容的提问来源于stack exchange,提问作者Snowfire777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:53:28