首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找两列之间相同的行数。

问查找两列之间相同的行数。
EN

Stack Overflow用户
提问于 2017-12-11 18:02:06
回答 2查看 55关注 0票数 1

我有一张桌子如下所示:

代码语言:javascript
复制
             check_churn  is_churn
0               True         1
1               True         1
2              False         1
3              False         1
4               True         1
5               True         1
6               True         1
7               True         1
8               True         1
9               True         1
10              True         1

我想确定有多少行是相同的。例如,自True = 1开始计算行0,与第1行也一样。所以答案是9,因为其中只有两个不匹配。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-11 18:07:31

我相信您需要比较列的值,并按sum计数sums,Trues是类似于1的进程:

代码语言:javascript
复制
print ((df['check_churn'] == df['is_churn']))
0      True
1      True
2     False
3     False
4      True
5      True
6      True
7      True
8      True
9      True
10     True
dtype: bool


print ((df['check_churn'] == df['is_churn']).sum())
9

另一个解决方案是过滤和获取DataFrame.shape。

代码语言:javascript
复制
print (df_train.loc[df_train.check_churn == df_train.is_churn].shape[0])
9

时间

代码语言:javascript
复制
np.random.seed(2017)
N = 10000
df = pd.DataFrame({'check_churn':np.random.choice([True, False], size=N),
                   'is_churn':np.random.choice([0, 1], size=N)})
print (df)

In [35]: %timeit (df['check_churn'] == df['is_churn']).sum()
1000 loops, best of 3: 414 µs per loop

In [36]: %timeit sum(df['check_churn'] & df['is_churn'])
1000 loops, best of 3: 793 µs per loop

In [37]: %timeit (df.loc[df.check_churn == df.is_churn].shape[0])
1000 loops, best of 3: 708 µs per loop
代码语言:javascript
复制
N = 1000000

In [39]: %timeit (df['check_churn'] == df['is_churn']).sum()
100 loops, best of 3: 18.2 ms per loop

In [40]: %timeit sum(df['check_churn'] & df['is_churn'])
10 loops, best of 3: 54.7 ms per loop

In [41]: %timeit (df.loc[df.check_churn == df.is_churn].shape[0])
10 loops, best of 3: 23.4 ms per loop

In [42]: %timeit (df['check_churn'] & df['is_churn']).sum()
10 loops, best of 3: 21.2 ms per loop
票数 1
EN

Stack Overflow用户

发布于 2017-12-11 18:16:12

我可能会这样写:

代码语言:javascript
复制
sum(df['check_churn'] & df['is_churn'])

完整的例子:

代码语言:javascript
复制
import pandas as pd

data = {'check_churn': {0: True,
  1: True,
  2: False,
  3: False,
  4: True,
  5: True,
  6: True,
  7: True,
  8: True,
  9: True,
  10: True},
 'is_churn': {0: 1,
  1: 1,
  2: 1,
  3: 1,
  4: 1,
  5: 1,
  6: 1,
  7: 1,
  8: 1,
  9: 1,
  10: 1}}

df = pd.DataFrame(data)

sum(df['check_churn'] & df['is_churn'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47758720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档