繁体   English   中英

根据多列中的值返回熊猫中的行

[英]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()

您可以使用idxminidxmax获取最旧和最新idxmax

df.loc[df.groupby(['Country or Area'])['Year'].idxmin()]

您需要使用groupby() 的agg 函数

您可以将函数或函数字典传递给您需要聚合的列

在您的情况下,代码应该像Crish 解决方案是更好的方法。

按要检查的值对数据框进行排序,然后分组并通过.agg()获得您需要的结果

stack()方法用于缩小 df 级别

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM