我面临的问题是,我只需要分配在不同行和列上的原始数据帧的子集。 E.g:
# My Original dataframe
import pandas as pd
dfTest = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
输出:
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
我可以提供一个列表,其中包含我想要的值所在的行和列索引:
array_indices = [[0,2],[1,0],[2,1]]
我想要的输出是一系列:
3
4
8
有人可以帮忙吗?
答案 0 :(得分:5)
使用pd.DataFrame.lookup
dfTest.lookup(*zip(*array_indices))
array([3, 4, 8])
您可以将其包装在pd.Series
构造函数
pd.Series(dfTest.lookup(*zip(*array_indices)))
0 3
1 4
2 8
dtype: int64
轻微变种
i, j = np.array(array_indices).T
dfTest.values[i, j]
array([3, 4, 8])
与上述类似
pd.Series(dfTest.values[i, j])
0 3
1 4
2 8
dtype: int64