如何在保留每个列的索引的同时,从数据帧中的每列获取最大(x)个值?

2024-10-16 22:30:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个数据帧中的每列中获取前x个最大值。每一列是一个日期,而每一行是一个不同的股票代码(见图)

理想情况下,我希望看到股票代码和前5名的数字为每个日期(列)

我尝试了几个不同的迭代器,但没有一个能够工作并保留索引

我想输出到一个新的csv与日期和前5名股票指数(指数)的基础上,他们在当天的价值列

作为pd导入

df=pd.read\u csv (见图)

一直没能让事情变好。enter image description here


Tags: csv数据dfread情况数字指数事情
1条回答
网友
1楼 · 发布于 2024-10-16 22:30:48

对每列应用pd.Series.nlargest,以屏蔽除前N个值以外的所有内容。然后unstack删除NaN。我将在这里使用前两个值进行说明

样本数据

import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame(np.random.normal(0, 10, (4, 3)), 
                  columns=['Date1', 'Date2', 'Date3'], 
                  index=['Stock1', 'Stock2', 'Stock3', 'Stock4'])
#            Date1     Date2     Date3
#Stock1   4.967142 -1.382643  6.476885
#Stock2  15.230299 -2.341534 -2.341370
#Stock3  15.792128  7.674347 -4.694744
#Stock4   5.425600 -4.634177 -4.657298

代码

df.apply(pd.Series.nlargest, n=2).unstack().dropna()

#Date1  Stock2    15.230299
#       Stock3    15.792128
#Date2  Stock1    -1.382643
#       Stock3     7.674347
#Date3  Stock1     6.476885
#       Stock2    -2.341370
#dtype: float64

相关问题 更多 >