我有一个以下结构的数据框。当我比较两行时,我想获得具有相同值(对于特定值)的列号。
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/