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 次 |
| 最近记录: |