2017-08-03 122 views
2

我有一個數據框包含一列,我們稱之爲「名稱」。 「名稱」具有其他列的名稱。我想添加一個新的列,每行都有一個基於該「名稱」列中包含的列名稱的值。熊貓 - 選擇列使用其他列值作爲列名稱

例子:

輸入數據幀: pd.DataFrame.from_dict({"a": [1, 2, 3,4], "b": [-1,-2,-3,-4], "names":['a','b','a','b']})

 
    a | b | names | 
--- | --- | ---- | 
    1 | -1 | 'a' | 
    2 | -2 | 'b' | 
    3 | -3 | 'a' | 
    4 | -4 | 'b' | 

輸出數據幀: pd.DataFrame.from_dict({"a": [1, 2, 3,4], "b": [-1,-2,-3,-4], "names":['a','b','a','b'], "new_col":[1,-2,3,-4]})

 
    a | b | names | new_col | 
--- | --- | ---- | ------ | 
    1 | -1 | 'a' | 1 | 
    2 | -2 | 'b' | -2 | 
    3 | -3 | 'a' | 3 | 
    4 | -4 | 'b' | -4 | 

謝謝

回答

3

您可以使用lookup

df['new_col'] = df.lookup(df.index, df.names) 
df 
# a b names new_col 
#0 1 -1  a 1 
#1 2 -2  b -2 
#2 3 -3  a 3 
#3 4 -4  b -4 
+1

謝謝!就是這樣。 – ab3