为排序的熊猫数据框中的每个 ID 选择特定列的第一个值

Posted

技术标签:

【中文标题】为排序的熊猫数据框中的每个 ID 选择特定列的第一个值【英文标题】:select first value of specific column for each ID in sorted pandas data frame 【发布时间】:2021-09-04 00:42:49 【问题描述】:

例如,我的数据框是:

ID time number
a 14:03:01 11
b 14:03:02 7
b 14:03:15 2
c 14:03:09 5
a 14:03:02 9
d 14:03:17 1
a 14:03:35 15
c 14:03:11 8

我按时间对该数据帧进行排序,对于每个 ID,我想获取最早时间的数字列的值。我知道解决方案是 SQL,但现在我很困惑为 pandas 做这件事。

ID number
a 11
b 7
c 5
d 1

如何使用 pandas 完成这些操作? (我不想使用“for循环”。)

【问题讨论】:

这能回答你的问题吗? Pandas dataframe get first row of each group 【参考方案1】:

尝试通过sort_values()方法、drop_duplicates()方法和drop()方法:

out=df.sort_values('time').drop_duplicates(subset=['ID']).drop('time',1)

通过groupby()first()

out=df.groupby('ID',as_index=False)['number'].first()

【讨论】:

以上是关于为排序的熊猫数据框中的每个 ID 选择特定列的第一个值的主要内容,如果未能解决你的问题,请参考以下文章

从熊猫数据框中的组内选择特定行

如何将两个熊猫列混合到一个数据框中,第一列的第一个元素,第二列的第二个元素等等? [复制]

从熊猫数据框中选择排序组的第一行

在以列索引为序号的熊猫数据框中选择多列

从熊猫数据框中选择特定行

根据索引在熊猫数据框中查找特定列的值[重复]