数据框中的新列,其值来自GroupBy的最大行

时间:2019-01-31 16:17:54

标签: python pandas

我有一个熊猫数据框,其中每一行代表十月的每一天的不同股票。数据框具有多个列。其中三个是Stock_idDateStock_value

我想找到在10月的每一天都具有最大值的股票,并将其Stock_id作为值插入到数据框中的新列中。

所以说我有这个:

enter image description here

然后我想以某种方式拥有它:

enter image description here

请记住,以上是示例输入和所需的输出。首先,每个“ Stock_id”在10月的每个日期都有一行。

我猜想该问题的解决方案将涉及诸如data_daily.groupby(['Date'])['Stock_value']之类的问题,但似乎更为明显,或者总的来说可能完全不同。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以尝试:

transform = df.groupby('Date')['Stock_value'].transform('idxmax')
df['Max_Stock_id'] = df.iloc[transform, 0].values

print(df)

输出

   Stock_id       Date  Stock_value  Max_Stock_id
0       963 2018-02-10         97.5           963
1      1201 2018-02-10         91.1           963
2      1341 2018-03-10         93.7          1341
3      1458 2018-03-10         92.6          1341