Home > Software design >  how do you divide each value from a pandas series in sequence
how do you divide each value from a pandas series in sequence

Time:02-02

Hi I was trying to figure out how to divide values from a DataFrame. But here I made an example for pandas series

a = pd.Series([1, 2, 16,64,128,360,720])
a
-----------------
0     1
1     2
2     16
3     64
4    128
5    360
6    720

So is there any way I could divide a number in a given row by the value from the previous row?

0     2
1     8
2     4
3     2
4     2.8
5     2

Furthermore, I also tried to get the output like "if the value is double, print the index".

Thank you for your help!

CodePudding user response:

Well I don't know what exactly you want to divide your pandas Series by, but you can do it like this :

# If you want to store a new result
b = a / value_to_divive_by
# or if you want to apply it directly to your serie
a /= value_to_divive_by

or using list comprehension

b = [int(nb / your_value_here) for nb in a]
# with a min value to do the divison
b = [int(nb / your_value_here) for nb in a if nb > min_value]

There is probably other ways to do what you want, but there is two easy solutions

CodePudding user response:

What it seems to me is that you are trying to divide a number in a given row by the one of the previous. This can be achieved using this code

import pandas as pd
import numpy as np
a = pd.Series([1, 2, 16,64,128,360,720])
division = pd.Series(np.divide(a.values[1:],a.values[:-1]))
index = pd.Series(np.multiply(division == 2, [i for i in range(len(a)-1)]))

Note: your question is very ill posed. You didn't specify what you wanted to achieve, I figured out by myself from the example. You also added a wrong snipped of code. Pay attention to make a nicer question next time

  •  Tags:  
  • Related