繁体   English   中英

添加新列,返回另一列中唯一值的最小值

[英]Add New Column that returns the min value for unique values in another column

我正在尝试创建一个名为“jolly”的新列,它将为 RH_RNo 中的每个唯一值填充 HIR_ValuePrice 列中的最小值。

这是我目前的尝试:

def evepricefav(races):
    for race in races:
        clv.loc[clv['RH_RNo'] == race]['HIR_EveningPrice']
    
clv['jolly'] = clv.apply(evepricefav, axis=1)

这是数据框的示例。 你可以看到一个失败的尝试用 1.4 填充了 jolly 列。

        RH_RNo   HIR_BSP   HIR_EveningPrice  value    jolly
794565  189631    28.75              26.0 -0.269565    1.4
794566  189631    15.38              13.0 -0.414824    1.4
794567  189631    15.00               6.0 -0.533333    1.4
794568  189631     4.80               5.0  0.458333    1.4
794569  189631     9.85              13.0  0.522843    1.4
794570  189631     4.30               9.0  0.627907    1.4
794571  189631     5.45               6.0  0.467890    1.4
794572  189631    34.00              17.0 -0.500000    1.4
794573  189631    13.00              11.0 -0.153846    1.4
794574  189634    31.77               9.0 -0.527856    1.4
794575  189634    60.00              26.0 -0.433333    1.4
794576  189634    13.50              17.0  0.925926    1.4
794577  189634     9.20              11.0 -0.130435    1.4
794578  189634     9.80               8.0 -0.081633    1.4
794579  189634    10.00              17.0  0.700000    1.4
794580  189634    11.79              17.0  0.102629    1.4
794581  189634    29.60              21.0  0.148649    1.4
794582  189634     2.99               3.5  0.337793    1.4
794583  189634     8.48               6.0 -0.292453    1.4
794584  189637    18.24              11.0 -0.396930    1.4

您可以根据RH_RNo列进行RH_RNo ,然后在'HIR_EveningPrice'上使用.transform('min')

df['jolly'] = df.groupby('RH_RNo')['HIR_EveningPrice'].transform('min')
print(df)

印刷:

        id  RH_RNo  HIR_BSP  HIR_EveningPrice     value  jolly
0   794565  189631    28.75              26.0 -0.269565    5.0
1   794566  189631    15.38              13.0 -0.414824    5.0
2   794567  189631    15.00               6.0 -0.533333    5.0
3   794568  189631     4.80               5.0  0.458333    5.0
4   794569  189631     9.85              13.0  0.522843    5.0
5   794570  189631     4.30               9.0  0.627907    5.0
6   794571  189631     5.45               6.0  0.467890    5.0
7   794572  189631    34.00              17.0 -0.500000    5.0
8   794573  189631    13.00              11.0 -0.153846    5.0
9   794574  189634    31.77               9.0 -0.527856    3.5
10  794575  189634    60.00              26.0 -0.433333    3.5
11  794576  189634    13.50              17.0  0.925926    3.5
12  794577  189634     9.20              11.0 -0.130435    3.5
13  794578  189634     9.80               8.0 -0.081633    3.5
14  794579  189634    10.00              17.0  0.700000    3.5
15  794580  189634    11.79              17.0  0.102629    3.5
16  794581  189634    29.60              21.0  0.148649    3.5
17  794582  189634     2.99               3.5  0.337793    3.5
18  794583  189634     8.48               6.0 -0.292453    3.5
19  794584  189637    18.24              11.0 -0.396930   11.0

使用以下代码

data1 = [1,1,2,1,2]
data2 = [7,2,8,1,3]
import pandas as pd 

df = pd.DataFrame(columns=["a","b"])
df['a'] = data1
df['b'] = data2

dfc = df.groupby('a')['b']
df = df.assign(jolly=dfc.transform(max))
print(df)

当然在那里设置你的 var 名称:)

样本数据的输出:

 ab jolly 0 1 7 7 1 1 2 7 2 2 8 8 3 1 1 7 4 2 3 8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM