panda获取两列或多列的逐行最小值



如何将两个数据帧的最小值作为pandas数据帧方程的一部分进行引用?我尝试使用python min()函数,但该函数不起作用。我正在寻找这样的东西:

data['eff'] = pd.DataFrame([data['flow_h'], data['flow_c']]).min() *Cp* (data[' Thi'] - data[' Tci'])

我还尝试使用pandas min()函数,但它也不起作用。

min_flow = pd.DataFrame([data['flow_h'], data['flow_c']]).min()
InvalidIndexError: Reindexing only valid with uniquely valued Index objects

我被这个错误弄糊涂了。数据列只是数字和名称,我不确定索引在哪里发挥作用。

import pandas as pd
import numpy as np
np.random.seed(365)
rows = 10
flow = {'flow_c': [np.random.randint(100) for _ in range(rows)],
        'flow_d': [np.random.randint(100) for _ in range(rows)],
        'flow_h': [np.random.randint(100) for _ in range(rows)]}
data = pd.DataFrame(flow)
# display(data)
   flow_c  flow_d  flow_h
0      82      36      43
1      52      48      12
2      33      28      77
3      91      99      11
4      44      95      27
5       5      94      64
6      98       3      88
7      73      39      92
8      26      39      62
9      56      74      50

如果要获取两列或多列的行mininum,请使用pandas.DataFrame.min。注意,默认情况下axis=0;指定CCD_ 6是必要的。

data['min_c_h'] = data[['flow_h','flow_c']].min(axis=1)
# display(data)
   flow_c  flow_d  flow_h  min_c_h
0      82      36      43       43
1      52      48      12       12
2      33      28      77       33
3      91      99      11       11
4      44      95      27       27
5       5      94      64        5
6      98       3      88       88
7      73      39      92       73
8      26      39      62       26
9      56      74      50       50

如果您想获得多列的单个最小值:

data[['flow_h','flow_c']].min().min()

第一个"min()"计算每列的最小值,并返回panda系列。第二个"min"返回每列最小值中的最小值。

也可以转置并调用min()

data['min_flow'] = data[['flow_h','flow_c']].T.min()

或者调用底层numpy数组上的CCD_ 8。

data['min_flow'] = data[['flow_h','flow_c']].values.min(axis=1)

如果没有通过任何轴,ndarray.min将在整个阵列上进行评估,因此对于多列的单个最小值(即最小值的最小值),访问底层numpy阵列也可能很有用:

minimum = data[['flow_h','flow_c']].values.min()

您也可以使用numpy来引用或获取另一列中两列(或多列)的行最小值。指定axis=1非常重要。

import numpy as np
...
data['min_c_h']= np.min(data[['flow_h','flow_c']],axis=1)

最新更新