pandas dataframe .loc行值

时间:2017-03-05 16:45:48

标签: python pandas jupyter-notebook

我有一个包含3列的数据框,我使用其中一列作为索引来查找其他列中的相应值。如图所示。

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列中的值。

1 个答案:

答案 0 :(得分:1)

如果需要为dict添加值,请使用:

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]}]