如何验证 pandas dataFrame 的两个系列是否具有相同的元素?
How do I verify that two series of a pandas dataFrame have the same elements?
我想比较数据帧中的两个系列,并得到关于它们是否具有完全相同元素的布尔值 True 或 False 答案。
如果一个元素不同,那么我想知道它的索引号。
谢谢!
IIUC 你可以使用 isin
:
In [123]:
s1 = pd.Series(np.arange(5))
s2 = pd.Series(np.arange(1,6))
s2
Out[123]:
0 1
1 2
2 3
3 4
4 5
dtype: int32
In [125]:
s1.isin(s2)
Out[125]:
0 False
1 True
2 True
3 True
4 True
dtype: bool
从上面你可以通过使用 ~
:
否定掩码来获得 False
的索引值
In [127]:
s1[~s1.isin(s2)].index
Out[127]:
Int64Index([0], dtype='int64')
EdChum,感谢您的回答!
它比我设法解决的问题要好,无论如何我都会 post 下面:
ser1 = Series(np.arange(16))
arr = ser1.reshape(4,4)
df = DataFrame((arr),columns=['a','b','c','d'])
ser_e = Series([2,6,10,14])
df['e'] = ser_e
df['c']>df['b']
df.loc[df['c'] != df['e'] ]
我想比较数据帧中的两个系列,并得到关于它们是否具有完全相同元素的布尔值 True 或 False 答案。
如果一个元素不同,那么我想知道它的索引号。
谢谢!
IIUC 你可以使用 isin
:
In [123]:
s1 = pd.Series(np.arange(5))
s2 = pd.Series(np.arange(1,6))
s2
Out[123]:
0 1
1 2
2 3
3 4
4 5
dtype: int32
In [125]:
s1.isin(s2)
Out[125]:
0 False
1 True
2 True
3 True
4 True
dtype: bool
从上面你可以通过使用 ~
:
False
的索引值
In [127]:
s1[~s1.isin(s2)].index
Out[127]:
Int64Index([0], dtype='int64')
EdChum,感谢您的回答!
它比我设法解决的问题要好,无论如何我都会 post 下面:
ser1 = Series(np.arange(16))
arr = ser1.reshape(4,4)
df = DataFrame((arr),columns=['a','b','c','d'])
ser_e = Series([2,6,10,14])
df['e'] = ser_e
df['c']>df['b']
df.loc[df['c'] != df['e'] ]