У меня есть следующий фрейм данных (отрегулированный_RFC_df):
Node Feature Indicator Scaled Class Direction True_False
0 0 km <= 0.181 class_4 0 -> 1 NA
125 125 gini = 0.000 class_2 0 -> 126 FALSE
1 1 WPS <= 0.074 class_5 1 -> 2 TRUE
52 52 gini = 0.000 class_2 1 -> 53 FALSE
105 105 gini = 0.492 class_3 102 -> 106 FALSE
102 102 weird_words <= 0.042 class_4 102 -> 103 TRUE
104 104 gini = 0.488 class_4 103 -> 105 FALSE
103 103 funktion <= 0.290 class_4 103 -> 104 TRUE
107 107 gini = 0.000 class_5 106 -> 108 FALSE
106 106 Nb_of_verbs <= 0.094 class_5 106 -> 107 TRUE
110 110 gini = 0.000 class_4 109 -> 111 FALSE
109 109 signal <= 0.320 class_4 109 -> 110 TRUE
112 112 Flesch_Index <= 0.627 class_1 112 -> 113 TRUE
115 115 gini = 0.000 class_3 112 -> 116 FALSE
114 114 gini = 0.000 class_1 113 -> 115 FALSE
113 113 Nb_of_auxiliary <= 0.714 class_1 113 -> 114 TRUE
.. ... ... ... ... ... ... ...
Я пытаюсь отсортировать строки по значению в столбце «Направление» (0 -> 1, означает, что я пытаюсь отсортировать по первому числу 0). Я пытаюсь сделать это с помощью:
## Sort rows based on first int of Direction column ##
# create a column['key'] to sort df
adjusted_RFC_df['key'] = Adjusted_RFC_df['Direction'].apply(lambda x: x.split()[0])
# Create new Dataframe with sorted values based on first number of 'Direction' col
class_determiner_df = Adjusted_RFC_df.sort_values('key')
Это работает при сортировке по первому значению перед '->' (с левой стороны), однако мне нужно, чтобы сортировка поддерживала порядок с номером справа от '->'
Так должно выглядеть так:
Node Feature Indicator Scaled Class Direction True_False
0 0 km <= 0.181 class_4 0 -> 1 NA
125 125 gini = 0.000 class_2 0 -> 126 FALSE
1 1 WPS <= 0.074 class_5 1 -> 2 TRUE
52 52 gini = 0.000 class_2 1 -> 53 FALSE
105 105 weird_words = 0.492 class_3 102 -> 103 FALSE
102 102 gini <= 0.042 class_4 102 -> 103 TRUE
104 104 funktion = 0.488 class_4 103 -> 104 FALSE
103 103 gini <= 0.290 class_4 103 -> 105 TRUE
107 107 Nb_of_verbs = 0.000 class_5 106 -> 107 FALSE
106 106 gini <= 0.094 class_5 106 -> 108 TRUE
110 110 signal = 0.000 class_4 109 -> 110 FALSE
109 109 gini <= 0.320 class_4 109 -> 111 TRUE
112 112 Flesch_Index <= 0.627 class_1 112 -> 113 TRUE
115 115 gini = 0.000 class_3 112 -> 116 FALSE
114 114 Nb_of_auxiliary = 0.000 class_1 113 -> 114 FALSE
113 113 gini <= 0.714 class_1 113 -> 115 TRUE
.. ... ... ... ... ... ... ...
Это сбивает с толку меня, так как иногда он поддерживает порядок между номерами с правой стороны, но в большинстве случаев это не так.
Я подумал, что, возможно, это проблема с сортировкой строк, так как направление col имеет тип string. Поэтому я попытался сделать следующее:
adjusted_RFC_df['key'] = adjusted_RFC_df['key'].astype(np.int64)
Однако это вызывает следующую ошибку:
ValueError: invalid literal for int() with base 10: 'NA'
Похоже, он пытается преобразовать столбец ['TRUE / FALSE'] в int, а также в столбец ['key']
.
Вероятно, проблема в том, что столбец Direction является строкой типа?
Или есть способ сортировки по первому номеру перед «->», при этом следя за тем, чтобы второе число также было в порядке (отсортировано от наименьшего к большему)?