Pandas version checks
- [X] I have checked that the issue still exists on the latest versions of the docs on
main
here
Location of the documentation
Warning when using Float64Index.get_loc:
(Pdb) df.index.get_loc(timestamp, method='ffill')
<stdin>:1: FutureWarning: Passing method to Float64Index.get_loc is deprecated and will raise in a future version. Use index.get_indexer([item], method=...) instead.
Documentation problem
The warning suggests using index.get_indexer()
, which seems to work at first but is actually different. get_loc(x)
returns an integer, and df.iloc[<integer>]
gives a Series
. get_indexer([x])
returns an array(<integer>)
, and df.iloc[array(<integer>)]
gives a DataFrame
with one row:
import pandas as pd
df = pd.DataFrame(dict(
a=[1,2,3],
))
i = df.index.get_indexer([0], method='ffill')
i2 = df.index.get_loc(0, method='ffill')
print(df.iloc[i].__class__)
print(df.iloc[i2].__class__)
Output:
testdf.py:9: FutureWarning: Passing method to RangeIndex.get_loc is deprecated and will raise in a future version. Use index.get_indexer([item], method=...) instead.
i2 = df.index.get_loc(0, method='ffill')
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.series.Series'>
I just corrected a crash where the downstream code was expecting a name
attribute on the output value, and there are probably many other ways Series
are different from DataFrame
.
Suggested fix for documentation
Provide a snippet that is actually equivalent:
<stdin>:1: FutureWarning: Passing method to Float64Index.get_loc is deprecated and will raise in a future version. Use index.get_indexer([item], method=...)[0] instead.
(notice the [0]
after get_indexer()
)
Comment From: simonjayhawkins
Thanks @douglas-raillard-arm for the report.
Can you update the OP to include a reproducible code sample, preferably cut and pastable.
Comment From: NikosAlexandris
Is this something that some end-user action can do away? I see this while trying to plot time series.
Comment From: phofl
Closing since 2.0 is out and Float64Index is removed now