为排序的熊猫数据框中的每个 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 选择特定列的第一个值的主要内容,如果未能解决你的问题,请参考以下文章