Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找包含列的正确设置值的行_Python_Pandas - Fatal编程技术网

Python 查找包含列的正确设置值的行

Python 查找包含列的正确设置值的行,python,pandas,Python,Pandas,我在df中的一列包含表示集合的字符串 tables,n_estimators,min_samples_split,min_samples_leaf,max_depth "{'school.csv'}",1024,16,4,8 "{'school.csv', 'univeristy.csv', 'work'}",1024,32,4,16 "{'univeristy.csv'}",1024,4,4,16 我试图找到一行对应于一个特定的集合值,如下所示: hp_row = hp_df.loc[set

我在df中的一列包含表示集合的字符串

tables,n_estimators,min_samples_split,min_samples_leaf,max_depth
"{'school.csv'}",1024,16,4,8
"{'school.csv', 'univeristy.csv', 'work'}",1024,32,4,16
"{'univeristy.csv'}",1024,4,4,16
我试图找到一行对应于一个特定的集合值,如下所示:

hp_row = hp_df.loc[set(eval(hp_df['tables'].to_numpy())) == {school.csv'}]
但这显然不起作用

ValueError: source code string cannot contain null bytes
有关于如何正确操作的帮助吗

此处hp_行的预期值为

"{'school.csv'}",1024,16,4,8
请注意,我要比较的是集合对象,而不是字符串

谢谢

编辑: 我的临时解决方案(但正在寻找更紧凑和优化的解决方案):


IIUC,您可以使用
ast.literal\u eval
将列
从字符串转换为集合,并将其分配给
s
。接下来,使用
loc
s
进行切片

import ast

s = df.tables.apply(ast.literal_eval)
df.loc[s == {'school.csv'}]

Out[109]:
           tables  n_estimators  min_samples_split  min_samples_leaf  \
0  {'school.csv'}          1024                 16                 4

   max_depth
0          8

如果要使用包含require元素的集合切片行:

hp_df[hp_df.apply(lambda row: 'school.csv' in eval(row['tables']),axis=1)]
hp_df[hp_df.apply(lambda row: 'school.csv' in eval(row['tables']),axis=1)]