it-swarm.com.de

Suchen der Labelposition in einem DataFrame-Index

Ich habe einen Pandas-Datenrahmen:

import pandas as pnd
d = pnd.Timestamp('2013-01-01 16:00')
dates = pnd.bdate_range(start=d, end = d+pnd.DateOffset(days=10), normalize = False)

df = pnd.DataFrame(index=dates, columns=['a'])
df['a'] = 6

print(df)
                     a
2013-01-01 16:00:00  6
2013-01-02 16:00:00  6
2013-01-03 16:00:00  6
2013-01-04 16:00:00  6
2013-01-07 16:00:00  6
2013-01-08 16:00:00  6
2013-01-09 16:00:00  6
2013-01-10 16:00:00  6
2013-01-11 16:00:00  6

Ich bin daran interessiert, die Position des Labels für eines der Labels zu finden.

ds = pnd.Timestamp('2013-01-02 16:00')

Wenn ich mir die Indexwerte anschaue, weiß ich, dass es sich um eine ganzzahlige Position dieses Labels handelt. 1. Wie können Pandas wissen, was der Integer-Wert dieses Labels ist?

13
nitin

Sie suchen nach der Indexmethode get_loc:

In [11]: df.index.get_loc(ds)
Out[11]: 1
30
Andy Hayden

Datenrahmen-Ganzzahlindex mit Datumsschlüssel abrufen:

>>> import pandas as pd

>>> df = pd.DataFrame(
    index=pd.date_range(pd.datetime(2008,1,1), pd.datetime(2008,1,5)),
    columns=("foo", "bar"))

>>> df["foo"] = [10,20,40,15,10]

>>> df["bar"] = [100,200,40,-50,-38]

>>> df
            foo  bar
2008-01-01   10  100
2008-01-02   20  200
2008-01-03   40   40
2008-01-04   15  -50
2008-01-05   10  -38

>>> df.index.get_loc(df["bar"].argmax())
1

>>> df.index.get_loc(df["foo"].argmax())
2

In der Spaltenleiste ist der Index des Maximalwerts 1

In der Spalte foo ist der Index des Maximalwerts 2

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.get_loc.html

2
Eric Leschinski

get_loc kann für Zeilen und Spalten verwendet werden nach: 

import pandas as pnd
d = pnd.Timestamp('2013-01-01 16:00')
dates = pnd.bdate_range(start=d, end = d+pnd.DateOffset(days=10), normalize = False)

df = pnd.DataFrame(index=dates)
df['a'] = 5
df['b'] = 6
print(df.head())    
                     a  b
2013-01-01 16:00:00  5  6
2013-01-02 16:00:00  5  6
2013-01-03 16:00:00  5  6
2013-01-04 16:00:00  5  6
2013-01-07 16:00:00  5  6

#for rows
print(df.index.get_loc('2013-01-01 16:00:00'))  
 0
#for columns
print(df.columns.get_loc('b'))
 1
0
Emad Saeidi