2017-03-05 271 views
1

我有一個包含3列的數據框,我使用其中一列作爲索引來查找其他列中的對應值。如圖所示。pandas dataframe .loc行值

loop 
data = [] 
a,b,c = df.loc[df['W'].index][['W','X','Y']] 
data.append({'W':a, 'X':b, 'Y':c,}) 
end loop 

輸出:

[{'W':'a', 'X':'b', 'Y':'c'}] 

的問題是,不是讓我在每行的值它給我列「W,X,Y」的名字。我需要在列中的值W,X和Y

+0

IIUC你需要'data.append({'W':df.W.tolist(),'X':df.X.tolist(),'Y':df.Y.tolist()})' – jezrael

+0

你工作過! – magicsword

回答

1

如果需要添加值,快譯通,使用:

data.append({'W':df.W.tolist(), 'X':df.X.tolist(), 'Y':df.Y.tolist()}) 

但相同的輸出是,如果使用:

data.append(df[['W','X','Y']].to_dict(orient='list')) 

示例:

np.random.seed(100) 
df = pd.DataFrame(np.random.randint(10, size=(5,3)), columns=list('WXY'), index=[2,3,4,5,6]) 
print (df) 
    W X Y 
2 8 8 3 
3 7 7 0 
4 4 2 5 
5 2 2 2 
6 1 0 8 

data = [] 
data.append({'W':df.W.tolist(), 'X':df.X.tolist(), 'Y':df.Y.tolist()}) 
print (data) 
[{'X': [8, 7, 2, 2, 0], 'W': [8, 7, 4, 2, 1], 'Y': [3, 0, 5, 2, 8]}] 

data = [] 
data.append(df[['W','X','Y']].to_dict(orient='list')) 
print (data) 
[{'X': [8, 7, 2, 2, 0], 'W': [8, 7, 4, 2, 1], 'Y': [3, 0, 5, 2, 8]}]