У меня есть переменная _df
, как указано ниже:
In [41]: _df
Out[41]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
1 - -
2 - -
3 Name Name2
4 XYZ ABC
5 XYZ ABC
6 - -
7 - -
8 - -
9 - -
10 - -
11
Я хотел бы удалить строки, все значения которых имеют определенный string
, в данном примере конкретная строка имеет символ -
.
Я могу достичь того, чего хочу достичь с помощью следующего метода цепочки, который я считаю крайне неэффективным
In [42]: (
...: _df
...: .T
...: .replace('-', np.nan)
...: .dropna(axis=1)
...: .T
...: )
Out[42]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
3 Name Name2
4 XYZ ABC
5 XYZ ABC
В методе, описанном выше, я переставляю ось, используя .T
, а затем использую метод .replace
, чтобы заменить все строки -
на значения np.nan
, а затем удалить их, используя dropna()
, и, наконец, транспонировать ее. обратно с .T
.
Я пытался использовать более простой способ, такой как результат ниже:
In [43]: _df[_df.values != '-']
Out[43]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
3 Name Name2
3 Name Name2
4 XYZ ABC
4 XYZ ABC
5 XYZ ABC
5 XYZ ABC
Мне известно о методе итерации по столбцам, но в моем случае он не будет полностью соответствовать тому, чего я хотел бы достичь.
Вопрос
Есть ли более эффективный способ достижения того, чего я хочу достичь, вместо использования цепочки методов, которую я использовал для второго кода сверху?