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

时间:2020-02-15 00:36:10

标签: python pandas

需要一些有关熊猫的帮助...我正在研究this data,并且正在尝试计算每个地区随时间的变化。 基本上,我正在尝试为所讨论的每个区域找到最早的数量和最新的数量。我有可以给我提供最新和最古老数据记录年份的代码,但是我需要收集整行,以便可以处理“数量”列。有输入吗?这就是我所拥有的:

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

谢谢!

4 个答案:

答案 0 :(得分:1)

df = df.sort_values(by=['Country or Area','Year'])
df.groupby('Country or Area').agg(['first','last']).stack()

答案 1 :(得分:1)

使用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()

答案 2 :(得分:0)

您可以使用idxminidxmax来获取最新信息

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

答案 3 :(得分:0)

您需要使用 agg functions of groupby()

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

在您的情况下,代码应类似于Crish solution,这是执行此操作的更好方法。

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

stack() 方法可降低df级别