【问题标题】:Pandas - create column based on column names referenced in another columnPandas - 根据另一列中引用的列名创建列
【发布时间】:2018-11-27 15:53:39
【问题描述】:

我尝试了多种方法(地图、过滤器、连接),但似乎没有任何效果。 我想要做的最好用下表来描述:(我需要得到“必需”列)

    colA    colB    colC    ref     required
1   a1        b1    c1      colA     a1
2   a2        b2    c2      colA     a2
3   a3        b3    c3      colB     b3
4   a4        b4    c4      colB     b4
5   a5        b5    c5      colC     c5
6   a6        b6    c6      colC     c6

以上只是一个例子——在实际例子中我有 >50 列,所以做条件是行不通的......

有什么建议吗?

【问题讨论】:

  • 怎么做?您能否详细说明您从哪些列开始、需要创建哪些列以及如何创建它们?
  • 抱歉 - 刚刚添加。我需要获取“必填”列

标签: python pandas dataframe mapping slice


【解决方案1】:

我会使用lookup method:

In [85]: df['required'] = df.lookup(df.index, df.ref)

In [86]: df
Out[86]:
  colA colB colC   ref required
1   a1   b1   c1  colA       a1
2   a2   b2   c2  colA       a2
3   a3   b3   c3  colB       b3
4   a4   b4   c4  colB       b4
5   a5   b5   c5  colC       c5
6   a6   b6   c6  colC       c6

【讨论】:

    【解决方案2】:

    如果我正确理解了您的问题,以下apply 将解决问题:

    # Starting DataFrame:
    >>> df
      colA colB colC   ref
    1   a1   b1   c1  colA
    2   a2   b2   c2  colA
    3   a3   b3   c3  colB
    4   a4   b4   c4  colB
    5   a5   b5   c5  colC
    6   a6   b6   c6  colC
    
    df['required'] = df.apply(lambda x: x.loc[x.ref], axis=1)
    
    # Final DataFrame:
    >>> df
      colA colB colC   ref required
    1   a1   b1   c1  colA       a1
    2   a2   b2   c2  colA       a2
    3   a3   b3   c3  colB       b3
    4   a4   b4   c4  colB       b4
    5   a5   b5   c5  colC       c5
    6   a6   b6   c6  colC       c6
    

    【讨论】:

      猜你喜欢
      • 2022-10-15
      • 2020-04-16
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多