我想通过一个名为'mid'
的列过滤pandas数据框,只保留特定范围内具有字段'mid'
的行。
我的代码如下:
df_org
是结构['uid','mid','cv1','cv2','cv3']
的数据框,series_moviesID
是一个pandas系列,其中包含我要用来过滤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)
但断言表达无法通过,任何人都知道潜在的错误吗?
答案 0 :(得分:0)
嗯。你的代码适合我。也尝试在s,df和两者中使用dupes并且它运行了。您可以分享更多细节吗?
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