8 python numpy dataframe pandas
我有一个 pandas Dataframe 和一个 pandas Series,如下所示。
df0 = pd.DataFrame({'col1':['a','b','c','d'],'col2':['b','c','e','f'],'col3':['d','f','g','a']})
col1 col2 col3
0 a b d
1 b c f
2 c e g
3 d f a
df1 = pd.Series(['b','g','g'], index=['col1','col2','col3'])
col1 b
col2 g
col3 g
dtype: object
Run Code Online (Sandbox Code Playgroud)
正如您所看到的, 的列df0
和 的索引df1
是相同的。对于 的每个索引df1
,我想知道该索引处的值是否存在于 的相应列中df0
。df1.col1
所以,b
我们b
只需要查找df0.col1
并检查它是否存在。
期望的输出:
array([True, False, True])
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用循环的情况下做到这一点?也许是 numpy 或 pandas 的原生方法?
小智 5
Pandas 的pandas.DataFrame.eq
方法可能是最简单的。
df0.eq(df1).any()
col1 True
col2 False
col3 True
dtype: bool
Run Code Online (Sandbox Code Playgroud)
您可以利用广播:
(df0 == df1).any().values
Run Code Online (Sandbox Code Playgroud)
它也适用于 NumPy ndarrays:
assert (df0.columns == df1.columns).all()
(df0.values == df1.values).any(axis=0)
Run Code Online (Sandbox Code Playgroud)
输出:
array([ True, False, True])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5666 次 |
最近记录: |