String row-index in pd.read_csv causes error "The label [1] is not in the [index]"
28,029
You have to cast columns with str
in your for.
In[60]: data = pd.read_csv(r'/Users/Desktop/data.csv', sep = ',', index_col = [0])
In[61]: obs = len(data)
In[62]: data["A"] = 0
data["B"] = 0
data["U"] = 0
In[63]: Passengers = 500
In[64]: for row in range(1,obs+1):
print row
A = 0
B = 0
U = 0
for i in range(1, Passengers + 1, 1):
if data.loc[row, str(i)] == "A":
A += 1
elif data.loc[row, str(i)] == "B":
B += 1
else:
U += 1
data.loc[row, "A"] = A
data.loc[row, "B"] = B
data.loc[row, "U"] = U
1
.
.
10
A shortest way to do that :
data = pd.read_csv(r'/Users/Desktop/data.csv', sep = ',', index_col = [0])
cols = data.columns
data['A'] = (data[cols] == 'A').astype(int).sum(axis=1)
data['B'] = (data[cols] == 'B').astype(int).sum(axis=1)
data['U'] = (data[cols] == 'U').astype(int).sum(axis=1)
Author by
Rupert
Updated on February 22, 2020Comments
-
Rupert about 4 years
I am importing a CSV into a pandas dataframe. When I am do this, I am setting the index column to 0, which is the Index listed (0 to 10). I am getting the error Key Error: the label [1] is not in the [index].
I've checked the data multiple times to make sure that the first column is the list of numbers. Any hints on how I can fix this?
from __future__ import division import pandas as pd import random import math #USER VARIABLES #GAME VARIABLES Passengers = 500 data = pd.read_csv("Problem2/data.csv", index_col=0) print(data) obs = len(data) data["A"] = 0 data["B"] = 0 data["U"] = 0 for row in range(1,obs+1, 1): A = 0 B = 0 U = 0 for i in range(1, Passengers + 1, 1): if data.loc[row, i] == "A": A += 1 elif data.loc[row, i] == "B": B += 1 else: U += 1 data.loc[row, "A"] = A data.loc[row, "B"] = B data.loc[row, "U"] = U ServiceLevels = range(170, 210,1) for level in ServiceLevels: print(str(level) + " " + str(len(data[((data.A <= level))])/obs))
Dataset = https://github.com/deacons2016/SimulationModels/blob/master/Exam1/Problem2/data.csv