HappyPy
HappyPy

Reputation: 10697

subtraction between rows in pandas - python

df=pd.DataFrame(data={'a':['x','y'], 'b':[25,23]},index=[0,1])

I just want to perform a simple subtraction between rows

df.b[df.a=='x']-df.b[df.a=='y']

But I get this output

0  NaN
1  NaN

Upvotes: 1

Views: 683

Answers (1)

jezrael
jezrael

Reputation: 862921

I think you need convert to numpy array by values, because both df have different indexes:

print (df.b[df.a=='x'])
0    25
Name: b, dtype: int64

print (df.b[df.a=='y'])
1    23
Name: b, dtype: int64

print (df.b[df.a=='x'].values - df.b[df.a=='y'].values)
[2]

If change index s2 by index of s1:

s1 = (df.b[df.a=='x'])

s2 = pd.Series(df.b[df.a=='y'].values, index=s1.index)

print (s1)
0    25
Name: b, dtype: int64

print (s2)
0    23
dtype: int64

print (s1 - s2)
0    2
dtype: int64

Upvotes: 2

Related Questions