在pandas中跨多个列查找最小值

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

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

我试图在pandas数据框中找到列的最小值,其中col被排列和分割。例如,我有pandas中的数据帧,如图所示。在

dataframe

为了获得更多的逻辑,我正在数据帧上迭代,并希望在不同的变量中获得T3:T6和T11:T14之间的列中的最小值。在

尝试了print(df.iloc[2,2:,2:4].min(axis=1))

迭代时,Row1的期望值是9和13。在


Tags: 数据pandasdfcol逻辑mint3row1
3条回答

创建一个简单的数据帧:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

    A   B   C   D
0   2   0   5   1
1   9   7   5   5
2   5   5   3   0
3   0   6   3   8
4   4   4   4   0
5   8   2   1   4
6   4   1   1   8
7   6   5   2   9
8   2   4   3   0
9   4   7   1   8

使用min()函数:

^{pr2}$

结果:

A    0
B    0
C    1
D    0

如果要选择特定列,请使用loc:

df.loc[:,'B':'C'].min()

B    0
C    1

额外奖励:将熊猫提升到另一个水平-最低限度喷漆:

df.style.apply(lambda x: ['background-color : red; font-size: 16px' if v==x.min() else 'font-size: 16px' for _,v in enumerate(x) ],axis=0)

enter image description here

对于测试数据帧:

df = pd.DataFrame({'A':[x for x in range(100)], 'B': [x for x in range(10,110)], 'C' : [x for x in range(20,120)] })

创建一个可应用于每行的函数,以查找最小值:

^{pr2}$

然后使用apply在每行上运行函数:

df.apply(lambda row: test(row), axis=1)

这将打印您在“test function”中输入的列的最小值

print(df[['T'+str(x) for x in range(3,7)]].min(axis=1)]

print(df[['T'+str(x) for x in range(11,15)]].min(axis=1)]

应分别打印t3、t4、t5、16和t11、t12、t13、14的所有行的分钟数

相关问题 更多 >