1
у меня есть dataframe, как это, с 10М строками:как добавить новый категориальный столбец в панд
probe
time
2016-01-01 00:05:00 3
2016-01-01 00:05:00 1
2016-01-01 00:05:00 5
2016-01-01 00:05:00 5
2016-01-01 00:05:00 4
2016-01-01 00:05:00 2
2016-01-01 00:05:00 5
2016-01-01 00:05:00 6
2016-01-01 00:05:00 3
2016-01-01 00:05:00 4
2016-01-01 00:05:00 5
2016-01-01 00:05:00 2
2016-01-01 00:05:00 3
2016-01-01 00:05:00 3
2016-01-01 00:05:00 5
Name: probe, dtype: uint8
Я хочу, чтобы добавить столбец categoricat на основе значения probe
def categorize_R(x):
return "inner" if x['probe'] in (1, 4) else "outer"
data['category_R'] = pandas.Categorical(data.apply(categorize_R, axis=1))
этой ужасно медленно. На самом деле вычисления маски, как это:
mask_inner = (x['probe'] == 1) | (x['probe'] == 4)
довольно быстро, но тогда я не знаю, как добавить столбец типа категоричной.
мы близки. Дело в том, что мне нужно сделать что-то более сложное, как '(x [probe] == 1) | (x [зонд] == 3) | (x [probe] == 4) ' –
Кроме того: было бы неплохо избежать создания промежуточной серии со строками и создать непосредственно ту, которая имеет категории –
' numpy.where' очень быстрая, а вывод - массив numpy , также вы можете изменить маску, как вам нужно - проверить последнее изменение. – jezrael