我在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(eval(hp_df['tables'].to_numpy())) == {school.csv'}]
但是这显然不起作用。
ValueError: source code string cannot contain null bytes
有关如何正确执行操作的任何帮助?
此处hp_row的预期值为
"{'school.csv'}",1024,16,4,8
谢谢
hp_df[hp_df['tables']=="{'school.csv'}"]
您可以使用df.loc进行操作,只需将set对象作为字符串解释传递给它:
print(df.loc[df['tables'] == "{'school.csv'}"])
输出:
tables n_estimators ... min_samples_leaf max_depth
0 {'school.csv'} 1024 ... 4 8
[1 rows x 5 columns]
使用boolean indexing
+ boolean indexing
:
DataFrame.eq
DataFrame.eq
在这种情况下,因为它与hp_row=hp_df[hp_df['tables'].eq("{'school.csv'}")]
print(hp_row)
进行比较,因此使用同样有效:
tables n_estimators min_samples_split min_samples_leaf \
0 {'school.csv'} 1024 16 4
max_depth
0 8
也可以使用str
+ hp_df['tables']=="{'school.csv'}"
:
loc
loc
但是正如您所见,这里没有必要boolean indexing