[英]Counting unique values in a subset of grouped rows in a Pandas dataframe. (I did my best with the title)
我试图找到某个发件人的最快时间。 在随附的图片Pandas DF中,您会看到我有一排 IP 地址以及时间和 SeqNo(我知道还有其他地址,但它们无关紧要)。 基本上我想做的是找到哪个 IP 在 SeqNo 相同的情况下最快(时间列中的数字最小)。 例如,对于 SeqNo 0,最快的 IP 将是 10.10.10.7,因为它具有最小的时间值,即 unix。 我需要对所有 SeqNos 组执行此操作,并找到 IP 最快的,因此每组 SeqNo' 的时间最短。
我在 pandas 中尝试了一些不同的 for、嵌套 for 和 while 循环以及一些不同的东西,但我没有运气。 如有需要请帮忙。
pandas 不是循环,而是让您groupby()
SeqNo
并获得每组的最短Time
:
index = df.groupby('SeqNo').Time.transform('min') == df.Time
df[index]
# Source SeqNo Time
# 0 10.10.10.8 0 0
# 2 10.10.10.2 1 2
# 5 10.10.10.8 2 5
基于此样本数据:
df = pd.DataFrame({'Source':[f'10.10.10.{i}' for i in np.random.randint(1,9,10)],'SeqNo':[0]*2+[1]*3+[2]*5,'Time':range(10)})
# Source SeqNo Time
# 0 10.10.10.8 0 0
# 1 10.10.10.6 0 1
# 2 10.10.10.2 1 2
# 3 10.10.10.4 1 3
# 4 10.10.10.2 1 4
# 5 10.10.10.8 2 5
# 6 10.10.10.7 2 6
# 7 10.10.10.7 2 7
# 8 10.10.10.3 2 8
# 9 10.10.10.8 2 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.