首页 > 解决方案 > 从列表中选择熊猫数据框的行,按列表顺序

问题描述

该问题最初是在此处作为评论提出的,但由于该问题被标记为重复,因此无法得到正确的答案。

对于给定的pandas.DataFrame,让我们说

df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]})
df

     A   B
0    5   1
1    6   2
2    3   3
3    4   5

我们如何根据列中的值从列表中选择行('A'例如)

例如

# from
list_of_values = [3,4,6]

# we would like, as a result
#      A   B
# 2    3   3
# 3    4   5
# 1    6   2

isin如此处所述使用并不令人满意,因为它不能保持输入'A'值列表中的顺序。

如何实现上述目标?

标签: pythonpandasdataframe

解决方案


克服这个问题的一种方法是使'A'列 anindexloc在新生成的pandas.DataFrame. 最终,可以重置子采样数据帧的索引。

方法如下:

ret = df.set_index('A').loc[list_of_values].reset_index(inplace=False)

# ret is
#      A   B
# 0    3   3
# 1    4   5
# 2    6   2 

请注意,此方法的缺点是原始索引在此过程中已丢失。

有关pandas索引的更多信息:在 pandas 中进行索引有什么意义?


推荐阅读