当满足for循环中的条件时,将一行中的值追加到同一行,但追加到新列中



我需要将R2ESL或MCL列中的数值(取较小值(附加到每行的新列"较小值"中(例如a、B、C(。

例如,对于参数A,值为7的MCL小于值为10的R2ESL。我想在一个新列(较小值(中得到7,但在同一行(a(。

到目前为止,我只能在for循环中使用"append"来附加"限制条件"列。

限制标准较小值>7R2ESL100
R2ESL MCL
A 10 7MCL
B 100 150
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:

  1. .values返回系列(或DataFrame(后面的numpy数组
  2. [v1==v2, v1<v2, v1>v2]创建仅包含布尔值(所谓的"掩码"(的三个numpy数组的列表。第一个包含True,其中v1v2中的项相等,否则为False。第二个包含True,其中v1中的值小于v2中的值。第三个包含True,其中v1中的值大于v2
  3. CCD_ 10采用两个参数:;条件";(真正屏蔽(和值列表,并用值列表中的相应值替换每个条件中的True

对于Lesser Value:

  1. df[['R2ESL', 'MCL']]基本上选择原始数据帧的子集数据帧,只有列R2ESLMCL
  2. CCD_ 15获取每一行的所有列的最小值

最新更新