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

问题描述 投票:0回答:3

我在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

谢谢

python pandas
3个回答
1
投票
hp_df[hp_df['tables']=="{'school.csv'}"]

0
投票

您可以使用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]

0
投票

使用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

© www.soinside.com 2019 - 2024. All rights reserved.