1
votes

Comment ajouter des lignes avec des valeurs spécifiques à un dataframe en python

Disons que j'ai le df suivant composé de x valeurs et de leurs probabilités commençant par x = 19 et se terminant par x = 64.

      x     probability
0   19.0     1.000000
1   20.0     1.000000
2   21.0     1.000000
3   22.0     1.000000
4   23.0     1.000000
...
43  64.0     0.000000
44  65.0     0.000000
43  66.0     0.000000
44  67.0     0.000000
...
73  97.0     0.000000
78  98.0     0.000000
79  99.0     0.000000
80  100.0    0.000000

Ce que je voudrais faire est d'ajouter des lignes allant de x = 65 à x = 100 et que toutes leurs probabilités soient égales à 0, comme ceci:

      x    probability
0   19.0    1.000000
1   20.0    1.000000
2   21.0    1.000000
3   22.0    1.000000
...
40  60.0    0.000000
41  62.0    0.500000
42  63.0    1.000000
43  64.0    0.000000

Encore une fois, je voudrais simplement ajouter des valeurs x consécutives de 65 à 100 avec une probabilité de 0. Je ne sais pas trop comment ajouter des lignes comme celle-ci, donc toute aide est appréciée. Merci!

Remarque: Cette question est similaire à ajouter un nombre spécifique de lignes à dataframe (python) , mais je veux que mes valeurs dans la colonne x augmentent de 1 à chaque fois au lieu de rester les mêmes.


0 commentaires

3 Réponses :


1
votes

Nous pouvons faire reindex

df_new=df.set_index('x').reindex(np.arange(df.x.min(),100+1),method='ffill').reset_index()


0 commentaires

3
votes

Créez simplement un deuxième dataframe et ajoutez avec df.append()

votre dataframe peut être créé avec

max_x = df['x'].max()
df_append = pd.DataFrame({'x':np.arange(max_x, 101)})
df_append['probability'] = 0

df_res = df.append(df_append)

créez un second dataframe et ajoutez-le au premier comme

df = pd.DataFrame({'x':np.arange(19, 65)})
df['probability'] = 1


0 commentaires

0
votes

Vous pouvez utiliser une boucle for pour générer une liste et ajouter le dataframe avec df.append(...)

x = []
probabilities = []
for i in range(65,101):
  x.append(i)
  probabilities.append(0)
new_df = pd.DataFrame({'x':x,'probabilites':probabilities})

df.append(new_df, ignore_index=True)


0 commentaires