我有一个熊猫数据框,其中每一行代表十月的每一天的不同股票。数据框具有多个列。其中三个是Stock_id
,Date
,Stock_value
。
我想找到在10月的每一天都具有最大值的股票,并将其Stock_id
作为值插入到数据框中的新列中。
所以说我有这个:
然后我想以某种方式拥有它:
请记住,以上是示例输入和所需的输出。首先,每个“ Stock_id”在10月的每个日期都有一行。
我猜想该问题的解决方案将涉及诸如data_daily.groupby(['Date'])['Stock_value']
之类的问题,但似乎更为明显,或者总的来说可能完全不同。
我该怎么做?
答案 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