微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 按列表顺序从列表中选择pandas dataframe行

该问题最初被问到here作为评论,但由于问题被标记为重复,因此无法得到正确的答案.

对于给定的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 here并不令人满意,因为它没有保持’A’值的输入列表的顺序.

如何实现上述目标?

解决方法:

解决此问题的一种方法是将“A”列设为索引,并在新生成的pandas.DataFrame上使用loc.最终,可以重置子采样数据帧的索引.

方法如下:

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 

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

有关熊猫索引的更多信息:What is the point of indexing in pandas?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐