通过将数据帧列值与另一个列表进行比较,从数据框中提取索引值时遇到问题。
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)]
答案 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