如何提取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
相关产品推荐
相关产品推荐

