Python 从多索引数据帧中获取最大值
我有一个数据框,如下图所示: 这里uid和id是索引。此数据帧是从单个索引数据帧转换而来的,因此某些列存在重复值。对于每个uid,avg_diff的所有值都是相同的,但不同的uid在此字段中将具有不同的值。我想用不同的UID获得最大的10个平均差值Python 从多索引数据帧中获取最大值,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我有一个数据框,如下图所示: 这里uid和id是索引。此数据帧是从单个索引数据帧转换而来的,因此某些列存在重复值。对于每个uid,avg_diff的所有值都是相同的,但不同的uid在此字段中将具有不同的值。我想用不同的UID获得最大的10个平均差值 注意:这是一个巨大的数据帧,因此我正在寻找最优化的方法。我认为您可以先使用删除重复项,~用于反转布尔掩码 然后使用or+: 另一个解决方案: mask = df.index.get_level_values('uid').duplicated()
注意:这是一个巨大的数据帧,因此我正在寻找最优化的方法。我认为您可以先使用删除重复项,
~
用于反转布尔掩码
然后使用or+:
另一个解决方案:
mask = df.index.get_level_values('uid').duplicated()
print (~mask)
[ True False False True False True False]
df = df[~mask].sort_values('avg_diff', ascending=False).head(2)
print (df)
avg_diff id
uid id
3 1 0.3 1
2 5 0.2 5
如果我没弄错的话,您只需要删除“uid”的副本,然后按avr_diff排序
unique_uid = data.reset_index().drop_duplicates("uid").set_index("uid")
print(unique_uid["avr_diff"].sort_values(ascending=False)[:10])
使用
print(df[~mask].nsmallest(2,'avg_diff'))
或df[~mask].sort_值('avg_diff')。head(2)
mask = df.index.get_level_values('uid').duplicated()
print (~mask)
[ True False False True False True False]
df = df[~mask].sort_values('avg_diff', ascending=False).head(2)
print (df)
avg_diff id
uid id
3 1 0.3 1
2 5 0.2 5
unique_uid = data.reset_index().drop_duplicates("uid").set_index("uid")
print(unique_uid["avr_diff"].sort_values(ascending=False)[:10])