使用索引列表访问 pandas 数据框中的条目
Access entries in pandas data frame using a list of indices
我面临的问题是我只需要分布在不同行和列上的原始数据框的一个子集。例如:
# 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
有人能帮忙吗?
使用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
我面临的问题是我只需要分布在不同行和列上的原始数据框的一个子集。例如:
# 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
有人能帮忙吗?
使用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