我需要将R2ESL或MCL列中的数值(取较小值(附加到每行的新列"较小值"中(例如a、B、C(。
例如,对于参数A,值为7的MCL小于值为10的R2ESL。我想在一个新列(较小值(中得到7,但在同一行(a(。
到目前为止,我只能在for循环中使用"append"来附加"限制条件"列。
R2ESL | MCL | 限制标准较小值||
---|---|---|---|
A | 10 | 7 | >MCL | 7
B | 100 | 150 | R2ESL100|
C | 55 | 等于 | 55 |
v1, v2 = df['R2ESL'].values, df['MCL'].values
df['Limiting Criteria'] = np.select([v1==v2, v1<v2, v1>v2], ['equal', 'R2ESL', 'MCL'])
# Determine the lesser value
df['Lesser Value'] = df[['R2ESL', 'MCL']].min(axis=1)
例如(这是从交互式Python会话中复制的(:
>>> df
param R2ESL MCL
0 A 10 7
1 B 100 150
2 C 55 55
>>> v1, v2 = df['R2ESL'].values, df['MCL'].values
>>> df['Limiting Criteria'] = np.select([v1==v2, v1<v2, v1>v2], ['equal', 'R2ESL', 'MCL'])
>>> df
param R2ESL MCL Limiting Criteria
0 A 10 7 MCL
1 B 100 150 R2ESL
2 C 55 55 equal
>>> df['Lesser Value'] = df[['R2ESL', 'MCL']].min(axis=1)
>>> df
param R2ESL MCL Limiting Criteria Lesser Value
0 A 10 7 MCL 7
1 B 100 150 R2ESL 100
2 C 55 55 equal 55
它的作用:
对于Limiting Criteria
:
.values
返回系列(或DataFrame(后面的numpy数组[v1==v2, v1<v2, v1>v2]
创建仅包含布尔值(所谓的"掩码"(的三个numpy数组的列表。第一个包含True,其中v1
和v2
中的项相等,否则为False。第二个包含True,其中v1
中的值小于v2
中的值。第三个包含True,其中v1
中的值大于v2
- CCD_ 10采用两个参数:;条件";(真正屏蔽(和值列表,并用值列表中的相应值替换每个条件中的True
对于Lesser Value
:
df[['R2ESL', 'MCL']]
基本上选择原始数据帧的子集数据帧,只有列R2ESL
和MCL
- CCD_ 15获取每一行的所有列的最小值