需要一些有关熊猫的帮助...我正在研究this data,并且正在尝试计算每个地区随时间的变化。 基本上,我正在尝试为所讨论的每个区域找到最早的数量和最新的数量。我有可以给我提供最新和最古老数据记录年份的代码,但是我需要收集整行,以便可以处理“数量”列。有输入吗?这就是我所拥有的:
df.groupby(['Country or Area'])['Year'].max()
谢谢!
答案 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)
您可以使用idxmin
和idxmax
来获取最新信息
df.loc[df.groupby(['Country or Area'])['Year'].idxmin()]
答案 3 :(得分:0)
您需要使用 agg functions of groupby()
您可以将函数或函数字典传递到需要聚合的列
在您的情况下,代码应类似于Crish solution,这是执行此操作的更好方法。
将数据框按要检查的值排序,然后分组并通过 .agg()获得所需的结果
stack() 方法可降低df级别