【问题标题】:Compare value of specific column and add a value to another | Pandas | Python比较特定列的值并将值添加到另一个 |熊猫 | Python
【发布时间】:2018-08-24 02:53:22
【问题描述】:

我有一个包含 6 列的数据框:

c1      c2             c3      c4           c5      c6
C875    DOID_3263       1       9.65E-18    1       unknown
C783    DOID_4064       1       4.80E-17    1       unknown
C372    DOID_0050084    0.996   0.00429     0.996   unknown
C43     DOID_936        0.0457  0.954       0.954   known

c5代表c3 and c4之间的最大值,我想添加一列after c6来比较c5中的最大值是否来自c3 put 0,如果它来自c4 put 1

所以,最后的结果会是这样的:

c1      c2              c3      c4          c5      c6       c7
C875    DOID_3263       1       9.65E-18    1       known    0
C783    DOID_4064       1       4.80E-17    1       unknown  0
C372    DOID_0050084    0.996   0.00429     0.996   unknown  0
C43     DOID_936        0.0457  0.954       0.954   known    1

有什么帮助吗?

【问题讨论】:

    标签: pandas dataframe compare


    【解决方案1】:

    首先,取两列的最大值

    df['c5'] = np.maximum(df['c3'], df['c4'])
    

    如果最大值等于“c4”,则输入 1,否则为 0(这意味着它来自此范例下的“c3”)。

    df['c7'] = (df['c5'] == df['c4']).astype(int)
    

    【讨论】:

      【解决方案2】:

      使用idxmax 会立即生成列的名称

      df[['c3','c4']].idxmax(1)
      
      0    c3
      1    c3
      2    c3
      3    c4
      dtype: object
      

      如果需要,可以随时映射01

      df[['c3','c4']].idxmax(1).map({'c3': 0, 'c4':1})
      
      0    0
      1    0
      2    0
      3    1
      dtype: int64
      

      【讨论】:

      • 不错的解决方案,我不知道 idmax 可以以这种方式使用。
      【解决方案3】:

      使用来自numpyselect

      s1=df.c3==df.c5
      s2=df.c4==df.c5
      df['c7']=np.select([s1,s2],[0,1])
      df
      Out[670]: 
           c1            c2      c3            c4     c5       c6  c7
      0  C875     DOID_3263  1.0000  9.650000e-18  1.000  unknown   0
      1  C783     DOID_4064  1.0000  4.800000e-17  1.000  unknown   0
      2  C372  DOID_0050084  0.9960  4.290000e-03  0.996  unknown   0
      3   C43      DOID_936  0.0457  9.540000e-01  0.954    known   1
      

      【讨论】:

        猜你喜欢
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多