Python Groupby返回最大值的整行
如何获取groupby relsult的完整数据行Python Groupby返回最大值的整行,python,pandas,Python,Pandas,如何获取groupby relsult的完整数据行 df a b c d e 0 a 25 12 1 20 1 a 15 1 1 1 2 b 12 1 1 1 3 n 25 2 3 3 In [4]: df = pd.read_clipboard() In [5]: df.groupby('a')['b'].max() Out[5]: a a 25 b 12 n 25 Name: b, dtype:
df
a b c d e
0 a 25 12 1 20
1 a 15 1 1 1
2 b 12 1 1 1
3 n 25 2 3 3
In [4]: df = pd.read_clipboard()
In [5]: df.groupby('a')['b'].max()
Out[5]:
a
a 25
b 12
n 25
Name: b, dtype: int64
这辆车怎么排得满满的
a b c d e
a 25 12 1 20
b 12 1 1 1
n 25 2 3 3
我尝试过过滤,但大小不同:(
原始数据:
0 1 2 3 4 5 6 7 8 9
EVE00101 Trial DRY RUN PASS 1610071 1610071 Y 20140808 NaN 29
10 11 12 13 14
FF1 ./ff1.sh Event Validation Hive Tables 2015-11-30 9:40:34
Groupby([1,7])[14].max()
给出了结果,但在以1和7作为索引的分组序列中,我需要相应的列。它是15000行数据,提供了一行示例我将使用覆盖“b”列,然后使用以下方法删除重复的“a”行:
您可以使用argmax()
:
这样,即使
b
不是最大的列,它也能工作。因为您只选择了列“b”。是的,我只想按'b'
分组,您必须提供数据以便我可以复制,一种可能是您有NaN
值,transform
被设计为返回与原始df对齐的序列,不清楚它如何生成比原始dfHi感谢EdChum更多的行,但是我得到了这个错误长度不匹配:预期的axis有14793个元素,新值有15279个元素
,在我的实际数据中,原因是什么?它并不总是返回出现最大值的行?如果尝试df,它会起作用吗['b']=df.groupby('a')['b'].transform(pd.Series.max)
?不用担心,我认为博维尔上校的答案在语义上是正确且更简单的方法
In [331]:
df['b'] = df.groupby('a')['b'].transform('max')
df
Out[331]:
a b c d e
0 a 25 12 1 20
1 a 25 1 1 1
2 b 12 1 1 1
3 n 25 2 3 3
In [332]:
df.drop_duplicates('a')
Out[332]:
a b c d e
0 a 25 12 1 20
2 b 12 1 1 1
3 n 25 2 3 3
In [287]: df.groupby('a', as_index=False).apply(lambda x: x.loc[x.b.argmax(),])
Out[287]:
a b c d e
0 a 25 12 1 20
1 b 12 1 1 1
2 n 25 2 3 3