我如何从pandas数据框中的每一列获取最大(x)值,同时保持每个索引的索引?

时间:2019-07-02 00:24:00

标签: python pandas loops dataframe indexing

我正在尝试从pandas数据框中的每一列中获取前x个最大值。每列是一个日期,而每一行是不同的股票行情自动收录器(见照片)

理想情况下,我想查看每个日期(列)的前5个股票的报价和数字

我尝试了几种不同的迭代器,但没有一个奏效并保留了索引。

我想要的输出将输入到新的csv中,其中包含日期和前5个股票行情自动收录器(指数),基于它们当天在列中的值。

将熊猫作为pd导入

df = pd.read_csv (见图)

无法正确显示。enter image description here

1 个答案:

答案 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