Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Python Pandas - Get integer location for requested label and find the previous index value if no exact match
To get the integer location for a requested label and find the previous index value if no exact match, use the get_loc() method with the method parameter set to "ffill" (forward fill).
Syntax
index.get_loc(key, method='ffill')
Creating a Pandas Index
First, let's create a Pandas Index with some integer values −
import pandas as pd
# Creating Pandas index
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
print("Pandas Index...\n", index)
Pandas Index... Int64Index([10, 20, 30, 40, 50, 60, 70], dtype='int64')
Finding Exact Matches
When the label exists in the index, get_loc() returns its integer position −
import pandas as pd
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
# Get exact locations
print("Location of 20:", index.get_loc(20))
print("Location of 50:", index.get_loc(50))
Location of 20: 1 Location of 50: 4
Finding Previous Index with Forward Fill
When no exact match is found, using method="ffill" returns the location of the previous (smaller) value −
import pandas as pd
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
# Get location of previous index if no exact match
# 45 doesn't exist, so it returns location of 40 (previous value)
print("Location for 45 (ffill):", index.get_loc(45, method="ffill"))
# 35 doesn't exist, so it returns location of 30 (previous value)
print("Location for 35 (ffill):", index.get_loc(35, method="ffill"))
Location for 45 (ffill): 3 Location for 35 (ffill): 2
Complete Example
import pandas as pd
# Creating Pandas index
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
# Display the Pandas index
print("Pandas Index...\n", index)
# Return the number of elements in the Index
print("\nNumber of elements in the index...\n", index.size)
# Get integer location from the given index
print("\nDisplay integer location from given index...\n", index.get_loc(20))
print("\nDisplay integer location from given index...\n", index.get_loc(50))
# Get the location of the previous index if no exact match
# The value is set "ffill" using the "method" parameter of the get_loc()
print("\nGet the location of the previous index if no exact match...\n", index.get_loc(45, method="ffill"))
Pandas Index... Int64Index([10, 20, 30, 40, 50, 60, 70], dtype='int64') Number of elements in the index... 7 Display integer location from given index... 1 Display integer location from given index... 4 Get the location of the previous index if no exact match... 3
How It Works
When searching for value 45 with method="ffill":
- 45 is not in the index [10, 20, 30, 40, 50, 60, 70]
- The method finds 40 (the largest value ? 45)
- Returns position 3 (index of 40)
Conclusion
The get_loc() method with method="ffill" is useful for finding the nearest previous value's position when an exact match doesn't exist. This is particularly helpful in time series data or when you need approximate lookups.
Advertisements
