d1 = {'x':1, 'y':2, 'z':1}
d2 = {'x':1, 'y':3, 'z':1}
m1 = np.logical_and.reduce([df[k] == v for k, v in d1.items()])
m2 = np.logical_and.reduce([df[k] == v for k, v in d2.items()])
def filter_function(df,filter_df):
lvl_=list()
lvl=list()
vlv=list()
df1=pd.DataFrame()
n=filter_df.apply(lambda x: x.tolist(), axis=1)
for i in range(0,len(n)):
for j in range(0,len(n[i])):
if i==0:
lvl_.append(n[i][j].split('==')[0])
lvl.append(n[i][j].split('==')[1])
if len(lvl)==len(n[i]):
vlv.append(lvl)
lvl=list()
final_df=df[lvl_]
for k in range(0,len(vlv)):
df1=df1.append(final_df[final_df.isin(vlv[k])].dropna())
return(df1)
filter_function(df,filter_df)
由于只有一个数字
dtype
,因此可以使用底层NumPy数组:对于具有
^{pr2}$list
输入的泛型函数:如果需要字典输入:
您可以创建
conditions
和{a1}的列表:或者^{} all mask来检查^{} 每行的所有
^{pr2}$True
:编辑:
如果可能,请使用字典中的筛选值定义列名:
另一种使用
merge
的方法,使用从字典创建的一行数据帧:编辑:
对于一般解决方案,可以将文件的每个值解析为元组并使用operators:
现在按list的第一个值过滤-文件的第一行:
相关问题 更多 >
编程相关推荐