如何将两个数据帧的最小值作为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)