2024-10-16 22:30:48 发布
网友
我试图从一个数据帧中的每列中获取前x个最大值。每一列是一个日期,而每一行是一个不同的股票代码(见图)
理想情况下,我希望看到股票代码和前5名的数字为每个日期(列)
我尝试了几个不同的迭代器,但没有一个能够工作并保留索引
我想输出到一个新的csv与日期和前5名股票指数(指数)的基础上,他们在当天的价值列
作为pd导入
df=pd.read\u csv (见图)
一直没能让事情变好。enter image description here
对每列应用pd.Series.nlargest,以屏蔽除前N个值以外的所有内容。然后unstack删除NaN。我将在这里使用前两个值进行说明
pd.Series.nlargest
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
对每列应用
pd.Series.nlargest
,以屏蔽除前N个值以外的所有内容。然后unstack
删除NaN
。我将在这里使用前两个值进行说明样本数据
代码
相关问题 更多 >
编程相关推荐