Как работать с «возрастными корзинами» в Pandas Dataframe, которые сохраняются как строки? - PullRequest
0 голосов
/ 04 октября 2019

Я загрузил набор данных в формате .csv из kaggle , что о lego. Вот столбец «Возраст», подобный следующему:

df['Ages'].unique()
array(['6-12', '12+', '7-12', '10+', '5-12', '8-12', '4-7', '4-99', '4+',
   '9-12', '16+', '14+', '9-14', '7-14', '8-14', '6+', '2-5', '1½-3',
   '1½-5', '9+', '5-8', '10-21', '8+', '6-14', '5+', '10-16', '10-14',
   '11-16', '12-16', '9-16', '7+'], dtype=object)

Эти категории - рекомендуемый возраст для использования и игры с легосами. Я собираюсь сделать некоторый статистический анализ с этими возрастными корзинами. Например, я хочу проверить среднее значение этих рекомендуемых возрастов. Однако, поскольку тип каждого из них равен string :

type(lego_dataset.loc[0]['Ages'])
str

Я не знаю, как работать с данными.

Я уже проверил Как классифицировать диапазон значений в Pandas DataFrame Но представьте, что есть 100 уникальных корзин. Нет смысла составлять список из 100 ярлыков для каждой категории. Должен быть лучший способ.

1 Ответ

1 голос
/ 04 октября 2019

Не совсем уверен, какой выход вы ищете. Посмотрите, поможет ли вам приведенный ниже код и вывод.

df['Lage'] = df['Ages'].str.split('[-+]').str[0]
df['Uage'] = df['Ages'].str.split('[-+]').str[-1]

или

df['Lage'] = df['Ages'].str.extract('(\d+)', expand=True) #you don't get the fractions for row 17 & 18
df['Uage'] = df['Ages'].str.split('[-+]').str[-1]

Вход

    Ages
0   6-12
1   12+
2   7-12
3   10+
4   5-12
5   8-12
6   4-7
7   4-99
8   4+
9   9-12
10  16+
11  14+
12  9-14
13  7-14
14  8-14
15  6+
16  2-5
17  1½-3
18  1½-5
19  9+
20  5-8
21  10-21
22  8+
23  6-14
24  5+
25  10-16
26  10-14
27  11-16
28  12-16
29  9-16
30  7+

Выход1

Ages    Lage    Uage
0   6-12    6   12
1   12+     12  
2   7-12    7   12
3   10+     10  
4   5-12    5   12
5   8-12    8   12
6   4-7     4   7
7   4-99    4   99
8   4+  4   
9   9-12    9   12
10  16+     16  
11  14+     14  
12  9-14    9   14
13  7-14    7   14
14  8-14    8   14
15  6+  6   
16  2-5     2   5
17  1½-3    1½  3
18  1½-5    1½  5
19  9+  9   
20  5-8     5   8
21  10-21   10  21
22  8+  8   
23  6-14    6   14
24  5+  5   
25  10-16   10  16
26  10-14   10  14
27  11-16   11  16
28  12-16   12  16
29  9-16    9   16
30  7+  7   

Выход2

Ages    Lage    Uage
0   6-12    6   12
1   12+     12  
2   7-12    7   12
3   10+     10  
4   5-12    5   12
5   8-12    8   12
6   4-7     4   7
7   4-99    4   99
8   4+  4   
9   9-12    9   12
10  16+     16  
11  14+     14  
12  9-14    9   14
13  7-14    7   14
14  8-14    8   14
15  6+  6   
16  2-5     2   5
17  1½-3    1   3
18  1½-5    1   5
19  9+  9   
20  5-8     5   8
21  10-21   10  21
22  8+  8   
23  6-14    6   14
24  5+  5   
25  10-16   10  16
26  10-14   10  14
27  11-16   11  16
28  12-16   12  16
29  9-16    9   16
30  7+  7   
...