python - 在 python 中比较数据框中的两行时查找公共(public)列

标签 python pandas dataframe

我有一个以下结构的数据框。当我比较两行时,我想获得具有相同值(对于特定值)的列号。

1 1 0 1 1
0 1 0 1 0
0 1 0 0 1
1 0 0 0 1
0 0 0 0 0
1 0 0 0 1

例如,当我使用上面的示例 df 比较两行以获取其中包含 1 的列时,当我比较 row(0) 和 row(1) 时,我应该得到 col(1) 和 col(3) )。同样,当我比较 row(1) 和 row(2) 时,我应该得到 col(1)。我想知道python是否有更有效的解决方案。

注意:我只想要匹配的列号,并且我还将指定要比较的行。

最佳答案

考虑以下数据框:

import numpy as np
df = pd.DataFrame(np.random.binomial(1, 0.2, (2, 10000)))

它将是一个大小为 2x10000 的二进制矩阵。

np.where((df.iloc[0] * df.iloc[1])) 

或者,

np.where((df.iloc[0]) & (df.iloc[1]))

返回两行中都有 1 的列。乘法似乎更快:

%timeit np.where((df.iloc[0]) & (df.iloc[1]))
1000 loops, best of 3: 400 µs per loop

%timeit np.where((df.iloc[0] * df.iloc[1]))
1000 loops, best of 3: 269 µs per loop

关于python - 在 python 中比较数据框中的两行时查找公共(public)列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37258563/

相关文章:

python - 对于不规则的分隔符,如何使 pandas read_csv 中的分隔符更加灵活 wrt 空格?

r - 在 dplyr::mutate 中使用条件

python - 类设计: Last Modified

javascript - 如果 javascript Onclick() 有 Mechanize ,如何点击按钮

python - 使用不同的 map 同时映射多个列

pandas dataframe 在组内的列中找到低于特定值的最后一个值

python - 在 Pandas DataFrame 中插入新列和相应的值(根据条件)

python - 转换 Pandas DataFrame 中列值的最有效方法

Python:为什么从线程调用的 `sys.exit(msg)` 不将 `msg` 打印到 stderr?

python super 调用子方法