J'ai un dataframe comme ça, avec des rangées de 10M:comment ajouter une nouvelle colonne catégorique pandas géants
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
Je veux ajouter une colonne de categoricat en fonction de la valeur de 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))
cette est terriblement lent. En fait, un calcul masque comme celui-ci:
mask_inner = (x['probe'] == 1) | (x['probe'] == 4)
est assez rapide, mais je ne sais pas comment ajouter une colonne de type catégorique.
nous sommes proches. Le fait est que j'ai besoin de faire quelque chose de plus compliqué comme '(x [probe] == 1) | (x [sonde] == 3) | (x [probe] == 4) ' –
en plus: il serait bon d'éviter la création de la série intermédiaire avec des chaînes et de créer directement celle avec les catégories –
' numpy.where' est très rapide et la sortie est un tableau numpy , vous pouvez également changer le masque que vous avez besoin - vérifiez la dernière édition. – jezrael