[英]Return rows in pandas based on values in multiple columns
需要一些有关熊猫的帮助...我正在处理这些数据,并且我正在尝试计算每个区域随时间的一些变化。 基本上,我试图为每个有问题的区域找到最旧的数量和最新的数量。 我有代码可以为我提供最新和最旧数据记录的年份,但是我需要收集整行,以便我可以处理“数量”列。 任何输入? 这是我所拥有的:
df.groupby(['Country or Area'])['Year'].max()
提前致谢!
df = df.sort_values(by=['Country or Area','Year'])
df.groupby('Country or Area').agg(['first','last']).stack()
使用 idxmin() 和 idxmax()。 就像是:
grp = df.groupby(['Country or Area'])
for name,group in grp:
print(name)
minidx = group['Year'].idxmin()
maxidx = group['Year'].idxmax()
print(f"min: {group['Year'][minidx]} {group['Quantity'][minidx]}")
print(f"max: {group['Year'][maxidx]} {group['Quantity'][maxidx]}")
print()
您可以使用idxmin
和idxmax
获取最旧和最新idxmax
df.loc[df.groupby(['Country or Area'])['Year'].idxmin()]
您需要使用groupby() 的agg 函数
您可以将函数或函数字典传递给您需要聚合的列
在您的情况下,代码应该像Crish 解决方案是更好的方法。
按要检查的值对数据框进行排序,然后分组并通过.agg()获得您需要的结果
stack()方法用于缩小 df 级别
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.