我遇到了在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'])]
但它返回空白。
谢谢!
答案 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