KeyError: 0 when accessing value in pandas series

Question:

In my script I have df[‘Time’] as shown below.

497   2017-08-06 11:00:00
548   2017-08-08 15:00:00
580   2017-08-10 04:00:00
646   2017-08-12 23:00:00
Name: Time, dtype: datetime64[ns]

But when i do

t1=pd.Timestamp(df['Time'][0])

I get an error like this :

KeyError: 0

Do I need any type conversion here, if yes then how it can be fixed?

Asked By: Bharat Sharma

||

Answers:

You’re looking for df.iloc.

df['Time'].iloc[0]

df['Time'][0] would’ve worked if your series had an index beginning from 0

And if need scalar only use Series.iat:

df['Time'].iat[0]
Answered By: cs95
def get_time_slice(full_matrix, start = 0., period = 1.):
    """
    Returns a slice of the given matrix, where start is the offset and period is 
    used to specify the length of the signal.
    
    Parameters:
        full_matrix (numpy.ndarray): matrix returned by matrix_from_csv()
        start (float): start point (in seconds after the beginning of records) 
        period (float): duration of the slice to be extracted (in seconds)
    Returns:
        numpy.ndarray: 2D matrix with the desired slice of the matrix
        float: actual length of the resulting time slice
        
    Author:
        Original: [lmanso]
        
I have also error clear to me anyone
Reimplemented: [fcampelo]
    """
    
    # Changed for greater efficiency [fcampelo]
    rstart  = full_matrix[0: 0] + start
    index_0 = np.max(np.where(full_matrix[: 0] <= rstart))
    index_1 = np.max(np.where(full_matrix[: 0] <= rstart + period))
    
    duration = full_matrix[index_1, 0] - full_matrix[index_0, 0]
    return full_matrix[index_0:index_1, :], 
Answered By: Dhivya Bharkavi

Problem

In my case, since I had dropped the first row (which contained indexed headers):

df.iloc[1:]

Passing an index of 0 would fail:

df.iloc[0]
>>> KeyError: 0

Solution

Add this to the end of the Dataframe you are indexing / slicing:

df.reset_index(drop=True)
Answered By: DanielBell99