我正在尝试从pandas数据框中的每一列中获取前x个最大值。每列是一个日期,而每一行是不同的股票行情自动收录器(见照片)
理想情况下,我想查看每个日期(列)的前5个股票的报价和数字
我尝试了几种不同的迭代器,但没有一个奏效并保留了索引。
我想要的输出将输入到新的csv中,其中包含日期和前5个股票行情自动收录器(指数),基于它们当天在列中的值。
将熊猫作为pd导入
df = pd.read_csv (见图)
无法正确显示。enter image description here
答案 0 :(得分:0)
将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