2017-04-16 1 views
2

je lis un fichier avec pandas_read et le résultat est:moyens Pandas pour calculer

TotIrr DiffIrr Temp WindSpeed 
0  3.2  2.5 19.67  0.34 
1  1.8  0.0 19.67  0.35 
2  2.5  1.4 19.67  0.31 
3  3.7  2.5 19.67  0.30 
4  3.2  2.5 19.67  0.32 

Une façon simple de calculer des colonnes est:

df['WS * 2'] = df['WindSpeed'] * 2 

Sortie:

TotIrr DiffIrr Temp WindSpeed WS * 2 
0  3.2  2.5 19.67  0.34 0.68 
1  1.8  0.0 19.67  0.35 0.70 
2  2.5  1.4 19.67  0.31 0.62 
3  3.7  2.5 19.67  0.30 0.60 
4  3.2  2.5 19.67  0.32 0.64 

Comment puis-je calculer WindSpeed_index_4 avec Temp_index_2? Y a-t-il un moyen simple?

+0

Pouvez-vous élaborer ce que vous essayez de faire? Serait-ce un type de calcul roulant? –

Répondre

2

Quelqu'un a déjà mentionné cette méthode dans les commentaires, mais juste pour le rendre plus clair, vous pouvez utiliser:

df['Fourth WindSpeed'] = df['WindSpeed'].shift(-4) 
df['Second Temp'] = df['Temp'].shift(-2) 
df['Third Value'] = df['Forth WindSpeed'] * df['Second Temp'] 

Ce serait l'idée générale accomplir ce dont vous avez besoin chez les pandas. Prenez note que la colonne "Troisième valeur" suivra l'index original de la df. Si vous avez besoin de suivre un autre index, vous pouvez utiliser:

df['Shift Third Value'] = df['Third Value'].shift(x) # x is an integer 

Une fois que vous obtenez la technique pour obtenir ce dont vous avez besoin, vous pouvez généralement compresser les déclarations pour le rendre plus efficace:

df['Third Value'] = df['WindSpeed'].shift(-4) * df['Temp'].shift(-2) 
+0

fonctionne parfaitement bien. Merci beaucoup :-) –

1

Vous pouvez utiliser iloc:

df['WindSpeed'].iloc[4] * df['Temp'].iloc[2] 
+0

Cela fonctionne, mais toutes les valeurs de la nouvelle colonne sont les mêmes. Y at-il un moyen de prendre la 4ème valeur de WindSpeed ​​et la 2ème valeur de Temp et de calculer une troisième valeur, puis passer à la ligne suivante? Comme une boucle for, seulement avec Pandas. –

+0

Ce que vous dites n'est pas clair. Que ferait la boucle après avoir pris la 4ème valeur de WindSpeed ​​et la 2ème valeur de Temp et calculé une troisième valeur? – splinter

+1

Je pense qu'ils cherchent un changement. – gereleth