如何根据索引和标题列表从数据帧中获取值?
这些是我拥有的数据帧:
a = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a','b','c'])
referencingDf = pd.DataFrame(['c','c','b'])
基于相同的索引,我尝试获得以下数据帧输出:
outputDf = pd.DataFrame([3,6,8])
目前,我尝试了这个,但需要采取对角线的值。我很确定有更好的方法:
a.loc[referencingDf.index.values, referencingDf[:][0].values]
您需要查找
:
b = a.lookup(a.index, referencingDf[0])
print (b)
[3 6 8]
df1 = pd.DataFrame({'vals':b}, index=a.index)
print (df1)
vals
0 3
1 6
2 8
IIUC,您可以使用df。在列表中获取值。
vals = [a.get_value(*x) for x in referencingDf.reset_index().values]
# a simplification would be [ ... for x in enumerate(referencingDf[0])] - DYZ
print(vals)
[3, 6, 8]
然后,构造一个数据帧。
df = pd.DataFrame(vals)
print(df)
0
0 3
1 6
2 8
使用列表理解的另一种方法:
vals = [a.loc[i,j] for i,j in enumerate(referencingDf[0])]
# [3, 6, 8]