python筛选出的行不起作用
我想通过一个名为python筛选出的行不起作用,python,pandas,filter,Python,Pandas,Filter,我想通过一个名为'mid'的列来过滤数据帧,只保留那些字段'mid'在特定范围内的行 我的代码如下: df_org是一个结构为['uid'、'mid'、'cv1'、'cv2'、'cv3']的数据框架,series\u moviesID是一个包含我想要用来过滤df_org数据框架的所有值的熊猫系列 filterOut(self, df_org, series_movieID, colName='mid'): mask=((df_org[colName]).isin(series_movie
'mid'
的列来过滤数据帧,只保留那些字段'mid'
在特定范围内的行
我的代码如下:
df_org
是一个结构为['uid'、'mid'、'cv1'、'cv2'、'cv3']
的数据框架,series\u moviesID
是一个包含我想要用来过滤df_org
数据框架的所有值的熊猫系列
filterOut(self, df_org, series_movieID, colName='mid'):
mask=((df_org[colName]).isin(series_movieID))
df_filterOut = df_org[mask]
assert set(df_filterOut['mid']).issubset(set(series_movieID))
return df_filterOut.reset_index().drop(labels='index', axis=1)
但是断言表达式无法通过,有人知道潜在的错误吗?嗯。您的代码对我有效。还尝试了s、df和两者中的DUPS,然后运行。你还可以分享更多的细节吗
In [2]: s = pd.Series(range(4), index=['a', 'b', 'c', 'd'])
In [3]: df = pd.DataFrame({'a': range(10), 'b': range(10, 20)}, index=range(20, 30))
In [4]:
In [4]: print s
a 0
b 1
c 2
d 3
dtype: int64
In [5]: print df
a b
20 0 10
21 1 11
22 2 12
23 3 13
24 4 14
25 5 15
26 6 16
27 7 17
28 8 18
29 9 19
In [6]: def filterOut(df_org, series_movieID, colName='mid'):
...: mask=((df_org[colName]).isin(series_movieID))
...: df_filterOut = df_org[mask]
...: assert set(df_filterOut[colName]).issubset(set(series_movieID))
...: return df_filterOut.reset_index().drop(labels='index', axis=1)
...:
In [7]: filterOut(df, s, colName='a')
Out[7]:
a b
0 0 10
1 1 11
2 2 12
3 3 13
如果您提供一些示例数据(例如5行)以及预期结果,这将非常有用。