大熊猫在df中重新排序行

时间:2017-12-19 21:08:47

标签: pandas rows

我遇到了在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'])]

但它返回空白。

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

IIUC:

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