首页 > 解决方案 > 使用列标题查找匹配值并在该行的匹配列中获取值

问题描述

我有一个数据框

 ID | calls_to_cust| 1 | 2 |  3| 4  | 5 
 123| 3            | 43| 12| 12| 3  | 42 
 133| 2            | 42| 32| 13| 4  | 7
 134| 6            | 42| 32| 13| 4  | 7  

我的结果应该是

 ID | calls_to_cust| 1 | 2 |  3| 4  | 5   |value
 123| 3            | 43| 12| 12| 3  | 42  |12
 133| 2            | 42| 32| 13| 4  | 7   |32
 134| 6            | 42| 32| 13| 4  | 7   |7

我想在列标题中查找值,calls_to_cust并使用该行和列号的匹配值作为新列中的值value

def match(x):
    for i in x.columns:
        if x['total_calls_hcp'] == i:
            return i.value()
    else:
        return 0

我尝试编写一个函数,但没有成功。我不能使用 df.lookup 因为值是浮动的并且会抛出错误。

编辑:如果该值不存在,那么我想提取最大值

标签: pythonpandasdataframe

解决方案


尝试:

df["value"] = df.apply(lambda x: x[str(x["calls_to_cust"])], axis=1)
print(df)

印刷:

    ID  calls_to_cust   1   2   3  4   5  value
0  123              3  43  12  12  3  42     12
1  133              2  42  32  13  4   7     32

推荐阅读