通过与另一个系列进行比较来查找数据框的索引值

时间:2017-07-05 13:09:18

标签: python pandas

通过将数据帧列值与另一个列表进行比较,从数据框中提取索引值时遇到问题。

list=[a,b,c,d]

  data frame
by comparing list with column X
   X Y Z 
0  a r t
1  e t y
2  c f h
3  d r t
4  b g q
this should return the index values like

  X
0 a
4 b
2 c
3 d
I tried this method

z=dataframe.loc[(dataframe['X'] == list)]

2 个答案:

答案 0 :(得分:4)

在与元素列表进行比较时,您应该使用isin

dataframe = pd.DataFrame(columns = ['X','Y','Z'])
dataframe['X'] = ['a','e','c','d','b']
dataframe['Y'] = ['r','t','f','r','g']
dataframe['Z'] = ['t','y','h','y','k']
mylist = ['a','b','c','d']

(总是在你的问题中发布一种创建数据框的方法,回答会更快)

dataframe[dataframe['X'].isin(mylist)].X

0    a
2    c
3    d
4    b
Name: X, dtype: object

答案 1 :(得分:1)

您需要使用isin

确保您的列表是字符串列表,然后使用dropna删除不需要的行和列。

list = ['a','b','c','d']
df[df.isin(list)].dropna(how='all').dropna(axis=1)

或者,如果您只想与第X列进行比较。

df.X[df.X.isin(list)]

输出:

   X
0  a
2  c
3  d
4  b