2017-09-12 1 views
1

J'ai une trame de données pandas et je voudrais ajouter une colonne vide (nommée nb_trades). Ensuite, je voudrais remplir cette nouvelle colonne avec un incrément de 5 par 5. Donc, je devrais obtenir une colonne avec des valeurs 5 10 15 20 ...Python - Pandas dataframe - itération à travers une colonne

Faire le code ci-dessous attribuer la même valeur (dernière valeur de i) dans toute la colonne et ce n'est pas ce que je voulais:

big_df["nb_trade"]='0' 
for i in range(big_df.shape[0]): 
    big_df['nb_trade']=5*(i+1) 

Quelqu'un peut-il m'aider?

+1

Pourquoi ne pas 'np.arange (5, 5 * (big_df.shape [ 0] +1), 5) '? – Zero

+0

Merci. Cependant, faire ceci n'est pas le résultat que je voulais. Je voulais incrémenter ligne par ligne dans une seule colonne. J'ai utilisé df ['new'] = np.arange (5, df.shape [0] * 5 + 5, 5) à la place. – CTXR

+0

Les deux sont identiques, voir la réponse ci-dessous! – Zero

Répondre

2

Utilisez range ou np.arrange:

df = pd.DataFrame({'a':[1,2,3]}) 
print (df) 
    a 
0 1 
1 2 
2 3 

df['new'] = range(5, len(df.index) * 5 + 5, 5) 
print (df) 
    a new 
0 1 5 
1 2 10 
2 3 15 

df['new'] = np.arange(5, df.shape[0] * 5 + 5, 5) 
print (df) 
    a new 
0 1 5 
1 2 10 
2 3 15 

Solution de John Galt de comment:

df['new'] = np.arange(5, 5*(df.shape[0]+1), 5) 
print (df) 
    a new 
0 1 5 
1 2 10 
2 3 15 
+0

Salut Jezrael. Merci, la méthode Arange a fonctionné. La méthode de plage ne correspond pas au nombre de lignes à l'origine. – CTXR

+0

Glad peut vous aider! Si ma réponse a été utile, ne pas oublier [accepter] (http://meta.stackexchange.com/a/5235/295067) il - cliquez sur la coche («✓») à côté de la réponse pour le faire passer de grisé à remplir. Merci. – jezrael