大熊猫在df中重新排序行

问题描述 投票:2回答:2

我在df1中重新排序行时遇到问题:

Name value1  value2 ...
ABC  1       3
ADC  2       3
IJK  3       4
XYZ  0       5

我希望结果只显示名称为XYZ和ABC的行:

Name value1  value2 ...
XYZ  0       5
ABC  1       3

我试过了:

df1 = df1[df1['Name'].str.contains('XYZ'||'ABC')]

df1 = df1[df1['Name'].isin(['XYZ','ABC'])]

但它返回空白。

谢谢!

pandas rows
2个回答
3
投票

由于isin不起作用的原因,它应该包含白色空白

并修好了你的str.contains

df[df['Name'].str.contains('XYZ|ABC')]
Out[619]: 
  Name  value1  value2
0  ABC       1       3
3  XYZ       0       5

重新排序

df[df['Name'].str.contains('XYZ|ABC')][::-1]
Out[620]: 
  Name  value1  value2
3  XYZ       0       5
0  ABC       1       3

2
投票

达蒙:

In [10]: lst = ['XYZ','ABC']

In [11]: d = {x:i for i,x in enumerate(lst)}

In [12]: d
Out[12]: {'ABC': 1, 'XYZ': 0}

In [13]: df.assign(x=df.Name.map(d)).sort_values('x').drop('x',1).query("Name in @lst")
Out[13]:
  Name  value1  value2
3  XYZ       0       5
0  ABC       1       3
© www.soinside.com 2019 - 2024. All rights reserved.