为数据框中的每一行找到n个最小值

垫子17

我有1739行和1455列的大型datarframe。我想找到每行的150个最低值(不是第150个值,而是150个值)。

我使用基本的for循环遍历行。

我尝试过,df.min(axis=1)但只给出一分钟。而且该rolling_min功能没有成功。

是否有任何现有函数可以输入我想用.min查找的值的数量?

我的最终目标是采用150个最低值并创建一个斜率,然后计算曲线下的面积。对每一行执行此操作,并添加区域以获取体积。

以数据框为例,我有一个如下所示的df:

     -218.7     -218.4    ...          217.2      217.5
0     56.632706  13.638315    ...      76.543000  76.543000
1     56.633455  13.576762    ...      76.543000  76.543000
2    -18.432203 -18.384091    ...      76.543000  76.543000
3    -18.476594 -18.439804    ...      76.543000  76.543000

标头是“ -218.7 ...”,它是扫描x轴上的坐标。数据是y轴扫描的高度。我需要的是每行的150个最低值,并且有相关的列标题,因为我想为每行绘制一条曲线,然后计算曲线下的面积。

所以我需要为每一行是这样的:

         -218.7     -218.4    ... for 150 columns
4    -18.532035 -18.497517    ... for 150 values

我不认为我需要存储每一行​​的标题信息,for循环会一次穿过每一行。

洛兹

使用.argsort获得的基本数组的索引排序。切片值和索引列以获取所需的所有信息。我们将创建一个MultiIndex,以便可以将列标题和值存储在同一DataFrame中。第一层将是您的原始索引。

例:

import pandas as pd
import numpy as np

np.random.seed(1)
df = pd.DataFrame(np.random.randint(1,100000, (1739, 26)))
df.columns = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')

N = 7  # 150 in your case
idx = np.argsort(df.values, 1)[:, 0:N]

pd.concat([pd.DataFrame(df.values.take(idx), index=df.index),
           pd.DataFrame(df.columns[idx], index=df.index)],
           keys=['Value', 'Columns']).sort_index(level=1)

输出:

                 0      1      2      3      4      5      6
Columns 0        C      K      U      V      I      G      P
Value   0     5193   7752   8445  19947  20610  21441  21759
Columns 1        R      J      W      C      B      D      G
Value   1      432   3607  16278  17138  19434  26104  33879
Columns 2        K      S      E      F      M      O      U
Value   2       16   1047   1845   9553  12314  13784  19432
Columns 3        K      Q      A      S      X      W      G
Value   3      244   5272  10836  13682  29237  33230  34448
Columns 4        K      T      L      U      C      D      M
Value   4     9765  11275  13160  22808  30870  33484  42760
...
Columns 1736     I      L      U      W      B      X      N
Value   1736  7099   7922  11047  12613  15502  18409  21576
Columns 1737     J      K      E      V      O      M      S
Value   1737  3000   5538   7933  13777  17310  22640  24750
Columns 1738     O      U      A      X      E      I      F
Value   1738  5118   5775  10267  11320  17659  30055  30702

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫数据框中每一行的最小值

如何找到数据帧每一行的最小值索引?

突变以在每一行中创建最小值

数组每一行中的最小值

在新列中为每一行添加最小值的列索引

将组中每一行的数值变量更新为子组的最小值

使用Pandas在python中为数据框的每一行找到最小二乘线性回归

R中具有数据帧的每一行的最小值

从 2 个矩阵 R 中寻找每一行的最小值

熊猫数据框-获取列索引以获取一行中的最小值

如何找到每一行的最大值和最小值

找到每列的最大值和最小值,然后找到每一行的最大值和最小值

熊猫将公式应用于每一行并找到最小值

如何在数据框中找到具有列的最小值的第一行

为多列的每一行选择最小值和最大值

如何返回第一行,该行比数据帧中每列的最小值高10%?

从另一个数据框的列中为数据框的每一行查找一个特定值

Python Pandas-过滤pandas数据框以获取一行中具有最小值的行,而另一行中的每个唯一值

R获得矩阵中每一行的最小值,并返回行名和列名

在pyspark [non pandas]中为数据框的每一行调用一个函数

在python中为Panda数据框的每一行创建一个Radar Chart

为数据框列中的每一行创建一个新变量

查找具有唯一列的数组中每一行的最小值

如何在巨大数据框的每一行中查找前n个值的列索引

从Pandas数据框的每一行中获取前N个值,以及它们各自的列名

从 pandas 数据框中的每一行捕获前三个唯一值

如何有效地在Pyspark的数据帧的每一列上为每个最小值或最大值获取一行?

收集数据框中每一行的值为True的列名

对于每一行,在二进制数据框中找到值为 1 的最后一列