Python 3.x 使用熊猫可以为每个独特的组找到最高的值
我是熊猫的新手,我有一个数据框,看起来像这样:Python 3.x 使用熊猫可以为每个独特的组找到最高的值,python-3.x,pandas,Python 3.x,Pandas,我是熊猫的新手,我有一个数据框,看起来像这样: ID HeatIndexCat 1 Lower 1 Moderate 1 Moderate 2 Lower 2 High 3 High 3 Lower
ID HeatIndexCat
1 Lower
1 Moderate
1 Moderate
2 Lower
2 High
3 High
3 Lower
我希望为每个类别分配值(例如,较低=33,中等=33至93,较高=39至46),并从具有相似ID的每组中获得最高类别
这是理想的结果:
ID HeatIndexCat Max
1 Lower Moderate
1 Moderate
1 Moderate
2 Lower High
2 High
3 High High
3 Lower
使用:
如果每个组只需要第一个值:
df['Max'] = df['Max'].mask(df['ID'].duplicated(), '')
print (df)
ID HeatIndexCat new Max
0 1 Lower 33 Moderate
1 1 Moderate 34
2 1 Moderate 34
3 2 Lower 33 High
4 2 High 40
5 3 High 40 High
6 3 Lower 33
使用:
如果每个组只需要第一个值:
df['Max'] = df['Max'].mask(df['ID'].duplicated(), '')
print (df)
ID HeatIndexCat new Max
0 1 Lower 33 Moderate
1 1 Moderate 34
2 1 Moderate 34
3 2 Lower 33 High
4 2 High 40
5 3 High 40 High
6 3 Lower 33
什么是中等=33到93,高=39到46?你能用数字填充的新列添加预期输出吗?对不起,我忘了包括它。我正在研究热指数数据集。这些值以°C为单位。勘误表:中等=33至39@jezrael,你的意思是用数字值而不是类别输出最大值吗?基本上@jezrael说的是中等33-93和高39-46相交,“高”基本上是“中等”的子集,我们如何知道分配哪一个?你的意思是中等是33-93,高的范围除外?什么意思是中等=33到93,高=39到46?你能用数字填充的新列添加预期输出吗?对不起,我忘了包括它。我正在研究热指数数据集。这些值以°C为单位。勘误表:中等=33至39@jezrael,你的意思是用数字值而不是类别输出最大值吗?基本上@jezrael说的是中等33-93和高39-46相交,“高”基本上是“中等”的子集,我们如何知道分配哪一个?你的意思是中等是33-93除了高的范围?