Df = x1, x2, x3, x4, x5 ... x90, 'ignorer' 37,4, 35,6, 43,5, 33,3, 42,4 ... 42,5, 'ignorer' 32,2, 37,2, 43,4, 34,3, 82,4 ... 22,1, 44 33,5, 45,5, 25,9, 23,8, 24,2 ... 52,2, vrai 35,4, 30,6, 33,3, 33,3, 42,5 ... 82 ....

2
GFG 25 janv. 2021 à 07:01

2 réponses

Meilleure réponse
df.update(df.iloc[:,0:90].div(df.max(axis=1), axis=0))

Tout d'abord, vous devez saisir la partie de la trame de données sur laquelle vous souhaitez effectuer la division: df.iloc[:,0:90] ce qui signifie que pour chaque ligne, choisissez les colonnes de 0 à 89.

Ensuite, vous saisissez le maximum de chaque ligne avec: df.max(axis=1). Parce que votre colonne ignore n'a pas toutes les valeurs numériques, elle serait ignorée par la fonction max donc pas de soucis à ce sujet.

Ensuite, vous faites une division avec axis=0 signifiant cette division sur chaque ligne.

Et, à la dernière étape, vous mettez à jour le dataframe.

2
Hoori M. 25 janv. 2021 à 04:33

Essayez d'utiliser la fonction apply link

Supprimez toute colonne de chaîne ou d'objet et stockez-la dans une autre variable et concaténez-la après l'opération que j'ai créée le cadre de données de taille

df.shape
Out[38]: (1000000, 91)

col = pd.DataFrame(df['col_str']) # Storing Categorical Col
df = df.drop('col_str', axis=1) # Dropping the col

start = datetime.now()    
tmp = df.apply(lambda x : x/max(x), axis=1, raw=True)
print(datetime.now()-start)
0:00:16.693436

Il a fallu environ 16 secondes

1
Shubham Rajput 25 janv. 2021 à 04:51
65878816