Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas how to get row number from datetime index and back again?

I have great difficulties. I have read a csv files, and set the index on "Timestamp" column like this

# df = pd.read_csv (csv_file, quotechar = "'", decimal = ".", delimiter=";", parse_dates = True, index_col="Timestamp")


# df

                      XYZ  PRICE  position  nrLots posText  
Timestamp                                                    
2014-10-14 10:00:29   30    140      -1.0    -1.0     buy   
2014-10-14 10:00:30   21     90      -1.0    -5.0     buy   
2014-10-14 10:00:31    3    110       1.0     2.0    sell   
2014-10-14 10:00:32   31    120       1.0     1.0    sell   
2014-10-14 10:00:33    4     70      -1.0    -5.0     buy   

So if I want to get the price of 2nd row, I want to do like this:

df.loc [2,"PRICE"]

But that does not work. If I want to use df.loc[] operator, I need to insert a Timestamp, like this:

df.loc["2014-10-14 10:00:31", "PRICE"]

If I want to use row numbers, I need to do like this instead:

df["PRICE"].iloc[2]

which sucks. The syntax is ugly. However, it works. I can get the value, and I can set the value - which is what I want.

If I want to find the Timestamp from a row, I can do like this:

df.index[row]

Question) Is there a more elegant syntax to get and set the value, when you always work with a row number? I always iterate over the row numbers, never iterate over Timestamps. I never use the Timestamp to access values, I always use row numbers.

Bonusquestion) If I have a Timestamp, how can I find the corresponding row number?

like image 678
Orvar Korvar Avatar asked Oct 25 '25 09:10

Orvar Korvar


1 Answers

Answer to the Bonus question:

df.index.get_loc(mytimestampindex) => return the row number in df
like image 123
Michel Avatar answered Oct 27 '25 01:10

Michel