2017-07-27 23 views
1

對於給定的Pandas​​行相匹配的列,我該如何使用值從一列返回另一列哪個名稱的值返回值來自第一列的值。例如。熊貓 - 對於連續一個給定的列值從名稱值

if row['column_name'] == 'col_A': 
    return row['col_A'] 
if row['column_name'] == 'col_B': 
    return row['col_B'] 

當您知道numpy中的agrmax時,您會想到獲得最大值的相同方法。例如。

import pandas as pd 
    import numpy as np 
    df = pd.DataFrame({'col_A': [1,2,3], 'col_B': [2,3,0]}) 

    df['col_C-max'] = df.apply(np.max, axis = 1) 
    df['col_D-colum_name_of_max_value'] = df[['col_A', 
    'col_B']].apply(np.argmax, axis = 1) 

在這種情況下獲得col_C只知道爲col_a,col_B和col_D時:

col_A col_B col_C-max col_D-colum_name_of_max_value 
    0 1 2  2   col_B 
    1 2 3  3   col_B 
    2 3 0  3   col_A 

回答

1

你可以用大熊貓'看中索引'lookup,這對索引和列名併爲每一對拿起一個值;在這種情況下這將是對於每個指數(行),它拿起從col_D相應的列下的值:

df = pd.DataFrame({'col_A': [1,2,3], 'col_B': [2,3,0], 'col_D': ['col_B', 'col_B', 'col_A']}) 

df['col_C'] = df.lookup(df.index, df.col_D) 

df 
# col_A col_B col_D col_C 
#0 1  2 col_B 2 
#1 2  3 col_B 3 
#2 3  0 col_A 3 
相關問題