我有一张看起来像这样的表:
Make RfR ID Test ID
VOLVO 8971 1
VOLVO 8173 28
VOLVO 8554 1
VOLVO 8556 1
VOLVO 8409 1
VOLVO 8712 1
VOLVO 8408 1
VOLVO 2056 35
KIA 8545 8
KIA 8157 1
KIA 7847 1
KIA 713 2
KIA 8551 3
KIA 8453 2
KIA 8466 8
这里我试图输出一个表,其行对应于每个品牌的测试ID的最大值(因此按make分区)。
输出应该如下所示:
Make RfR ID Test ID
VOLVO 2056 35
KIA 8545 28
在SQL中我会使用' partition by'但还没找到与熊猫做类似的事情
答案 0 :(得分:2)
IIUC,您想要“对应于每个品牌的测试ID的最大值的行”。为此,我会通过make找出最大值的索引,然后使用它们索引到df
:
>>> df.groupby("Make")["Test ID"].idxmax()
Make
KIA 8
VOLVO 7
Name: Test ID, dtype: int64
>>> df.loc[df.groupby("Make")["Test ID"].idxmax()]
Make RfR ID Test ID
8 KIA 8545 8
7 VOLVO 2056 35
如果您的索引不是唯一的,您可以先.reset_index()
。
请注意,这将在重复的情况下检索第一个最大值(因此KIA 8545而不是KIA 8466,它们都具有测试ID == 8。)如果您反而想要它们,那么您也可以使用{{ 1}}:
transform
答案 1 :(得分:1)
试试这个:
$(document).ready(function() {
if(localStorage.getItem("storageItemName")) {
$(target-element).addClass('myClass')
}
});
$(window).unload(function() {
localStorage.setItem("storageItemName", $(target-element).hasClass('myClass'));
});
测试:
print(df.groupby('Make').max())
输出:
import six
import pandas as pd
data = """\
Make RfRID TestID
VOLVO 8971 1
VOLVO 8173 28
VOLVO 8554 1
VOLVO 8556 1
VOLVO 8409 1
VOLVO 8712 1
VOLVO 8408 1
VOLVO 2056 35
KIA 8545 8
KIA 8157 1
KIA 7847 1
KIA 713 2
KIA 8551 3
KIA 8453 2
KIA 8466 8
"""
df = pd.read_csv(six.StringIO(data), sep='\s+')
print(df)
print(df.groupby('Make').max())
PS可选择重置索引:
RfRID TestID
Make
KIA 8551 8
VOLVO 8971 35