python - 在 Pandas 数据框中选择行时如何保持顺序?

标签 python pandas

我想按列表中给定的特定顺序选择行。例如

这个数据框

a=[['car',1],['bike',3],['jewel',2],['tv',5],['phone',6]]

df=pd.DataFrame(a,columns=['items','quantity'])

>>> df
   items  quantity
0    car         1
1   bike         3
2  jewel         2
3     tv         5
4  phone         6

我想获取顺序为 ['tv','car','phone'] 的行,即第一行 tv,然后是 car,最后是 phone。我试过这个方法,但它不保持秩序

arr=['tv','car','phone']

df.loc[df['items'].isin(arr)]

   items  quantity
0    car         1
3     tv         5
4  phone         6

最佳答案

这是一个使用 Index.get_indexer 的非侵入式解决方案这不涉及设置索引:

df.iloc[pd.Index(df['items']).get_indexer(['tv','car','phone'])]

   items  quantity
3     tv         5
0    car         1
4  phone         6

请注意,如果这将成为经常发生的事情(我指的是用列上的列表“索引”),则最好将该列转换为索引。如果您对它进行排序,将获得加分。

df2 = df.set_index('items')
df2.loc[['tv','car','phone']]  

       quantity
items          
tv            5
car           1
phone         6

关于python - 在 Pandas 数据框中选择行时如何保持顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658723/

相关文章:

python - 具有 NA 的两列的条件最小值

python - '不再支持将列表喜欢传递给带有任何缺失标签的 .loc 或 [],请参阅

python - 如何轻松地将数组的额外元素解压缩到单个变量中?

python - 如何限制 Django admin 中的选择数量

python - 如何在 linux LXDE 上使用 tkinter 删除标题栏而不使用 overrideredirect 或属性?

python-3.x - 计算另一列中 Id 的总行数

python - 将不同的条目拆分成单独的行,只允许某些组合

python - 我可以在 Gekko 的中间变量中使用累积分布函数吗?

python - 将希腊语句子括在标签之间或查找并替换包含希腊语字符的句子部分

python - 捕获多处理池映射中的错误