'Trouble with 'for' loop: Length of values (0) does not match length of index (52)
I am newer to python, and am trying to write a 'for' loop to perform a calculation on one column in a dataframe and put the results in another column. However, I'm getting the following error:
ValueError: Length of values (0) does not match length of index (52)
What is the problem in my code?
#Import modules
import pandas as pd
import numpy as np
import os
#Read dataframe
df = pd.read_csv(file)
df.head(52)
Here is the data:
Sample_ID longitude latitude n_ppm Mehlich_3_ppm k_ppm pH Buffer_pH OM Zn_ppm
0 1 -100.922987 39.248554 32 20 29 7.1 7.2 2.7 3.4
1 2 -100.921920 39.248792 35 13 22 7.2 7.3 2.7 3.0
2 3 -100.920808 39.248584 34 8 21 7.5 7.3 2.6 1.2
3 4 -100.919779 39.248591 32 8 33 7.4 7.3 2.6 1.2
4 5 -100.918698 39.247933 42 7 26 7.1 7.1 2.6 1.2
5 6 -100.919457 39.247719 42 7 28 7.4 7.3 2.7 1.5
6 7 -100.920822 39.247916 36 9 32 7.4 7.3 2.8 1.6
7 8 -100.922241 39.247906 36 35 25 7.4 7.3 2.6 3.4
8 9 -100.923254 39.247781 31 35 26 7.5 7.3 3.0 4.2
9 10 -100.924217 39.247858 41 67 40 7.2 7.3 3.0 4.7
10 11 -100.925033 39.246966 50 46 26 7.6 7.3 2.9 2.3
11 12 -100.924190 39.246857 55 71 34 6.9 7.1 3.0 4.3
12 13 -100.923128 39.247089 50 68 27 7.2 7.2 2.7 3.6
13 14 -100.921795 39.246824 50 63 20 7.2 7.2 2.9 3.9
14 15 -100.920870 39.247048 50 43 32 7.2 7.2 3.1 3.1
15 16 -100.919414 39.246841 50 14 32 7.2 7.2 2.7 1.5
16 17 -100.918580 39.247120 50 10 23 7.3 7.3 2.6 1.2
17 18 -100.917600 39.246849 50 9 20 7.3 7.3 2.4 1.1
18 19 -100.917600 39.246111 50 23 36 7.3 7.3 3.3 1.4
19 20 -100.918410 39.245921 50 28 26 7.3 7.3 3.2 1.1
20 21 -100.919478 39.246194 50 99 23 7.1 7.1 3.4 3.0
21 22 -100.920773 39.245991 38 27 38 7.3 7.3 3.3 2.6
22 23 -100.921784 39.246063 37 26 40 7.4 7.3 3.4 3.5
23 24 -100.923103 39.246296 30 48 36 7.3 7.3 3.4 3.2
24 25 -100.924202 39.246112 34 64 33 7.1 7.2 3.2 3.1
25 26 -100.925255 39.246100 41 30 36 7.1 7.2 2.9 2.6
26 27 -100.925431 39.245284 33 29 34 7.7 7.4 3.0 2.3
27 28 -100.924429 39.245093 43 52 23 6.8 7.1 3.7 3.2
28 29 -100.923143 39.245226 36 24 36 7.1 7.2 2.9 3.8
29 30 -100.922008 39.245047 38 36 36 7.0 7.1 3.2 3.6
30 31 -100.920764 39.245258 39 17 35 7.2 7.2 3.3 3.5
31 32 -100.919717 39.244983 41 10 26 7.2 7.2 3.1 1.8
32 33 -100.918345 39.245352 37 13 27 7.2 7.3 3.3 1.7
33 34 -100.917390 39.245077 34 14 21 7.1 7.2 2.9 1.3
34 35 -100.917553 39.244407 41 67 22 7.1 7.2 3.6 1.9
35 36 -100.918440 39.244260 41 12 34 7.2 7.2 2.9 1.3
36 37 -100.919476 39.244483 32 9 23 7.4 7.3 2.8 1.2
37 38 -100.920955 39.244112 45 25 39 7.1 7.2 3.0 4.5
38 39 -100.921705 39.244254 36 27 39 7.2 7.2 3.2 3.8
39 40 -100.923370 39.244238 33 28 35 7.0 7.2 2.7 3.1
40 41 -100.924262 39.244383 45 32 32 7.1 7.2 3.0 3.0
41 42 -100.925087 39.244483 40 12 29 7.2 7.2 2.9 2.7
42 43 -100.924365 39.243440 30 59 23 6.9 7.1 3.8 3.2
43 44 -100.923045 39.243196 43 10 22 7.2 7.3 2.6 2.9
44 45 -100.921845 39.243471 37 23 20 7.1 7.2 3.1 3.3
45 46 -100.920755 39.243252 35 21 37 7.2 7.2 3.2 5.1
46 47 -100.919772 39.243325 45 12 36 7.1 7.2 2.6 2.1
47 48 -100.918568 39.243501 40 9 20 7.0 7.2 2.7 1.0
48 49 -100.919691 39.242702 34 8 32 7.2 7.2 3.0 2.2
49 50 -100.920656 39.242624 35 15 20 7.4 7.3 3.2 4.8
50 51 -100.922180 39.242513 36 9 28 7.0 7.2 2.8 2.4
51 52 -100.922826 39.242723 34 10 37 7.1 7.2 4.3 2.8
organicMatterField = df['OM']
yieldGoal = 150
nitrogenField = df['n_ppm']
pca = 0
nitrogen_needed = []
for nit in df['n_ppm']:
nit = ((1.6 * int(yieldGoal)) - (organicMatterField * 20) - (nitrogenField) - float(pca))
#Create a new column within the dataframe
df['Nitrogen recommendation (ppm)'] = nitrogen_needed
print(df)
The error is thrown here. It may be because my 'for' loop isn't written right, but I'm not sure.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
