打印列pandas的公共值

时间:2016-03-21 21:17:17

标签: python csv pandas

我有带数据的csv文件

                                  ID   address             used_at   active_seconds
0   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2014-03-17 00:24:47    148  
1   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2014-03-17 01:08:29    34  
2   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2014-05-02 17:47:39    22  
3   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2015-01-03 01:37:05    224  
4   bcb0cc3d7f01dc6297f1331362a0fc09     e1.ru 2015-01-11 03:49:50    54   
5   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2015-03-10 22:11:01    26   
6   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2015-03-25 03:02:07    22 
7   690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-02-05 09:25:56    6  
8   690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-03-18 11:27:49    244 
9   690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-04-02 09:01:50    634  
10  690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-04-04 15:44:50    4206 
11  690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-04-08 09:30:25    196
12  690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-05-11 02:09:27    50
13  690ef4613fd977f9c29e1124b9d5814c  avito.ru 2014-05-17 14:41:51    838
14  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-05 13:35:19    2038
15  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-05 17:12:48    170
16  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-06 01:16:08    136
17  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-07 23:06:52    657
18  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-09 22:43:05    170
19  4be390eefaf9a64e7cb52937c4a5c77a   drom.ru 2014-01-09 20:09:21    44
20  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-10 18:42:42    54
21  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-12 12:19:20    880
22  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-13 19:38:59    462
23  4be390eefaf9a64e7cb52937c4a5c77a     e1.ru 2014-01-17 18:48:06    590
24  4be390eefaf9a64e7cb52937c4a5c77a   drom.ru 2014-01-17 18:31:04    996
25  4be390eefaf9a64e7cb52937c4a5c77a   auto.ru 2014-01-17 18:46:28    26

我需要为每个地址打印相同和不同ID的数量。 例如

 3   bcb0cc3d7f01dc6297f1331362a0fc09  avito.ru 2015-01-03 01:37:05    224  
 4   bcb0cc3d7f01dc6297f1331362a0fc09     e1.ru 2015-01-11 03:49:50    54

有一个用户(ID)访问了两个站点。我需要为2014年和2015年的每对网站打印所有相同的唯一用户。它看起来像avito.ru el.ru - 1 common user at 2014 我不明白我怎么能这样做,因为所有的方法都在2列,而不是分开。我需要分别打印2014年和2015年的印刷品(此文件仅包括2014年和2015年)。 file with all data

1 个答案:

答案 0 :(得分:2)

您可以尝试nuniquevalue_counts

print df.groupby(['address', df['used_at'].dt.year])['ID'].nunique().reset_index(name='a')
    address  used_at  a
0   auto.ru     2014  1
1  avito.ru     2014  2
2  avito.ru     2015  1
3   drom.ru     2014  1
4     e1.ru     2014  1
5     e1.ru     2015  1

df1=df.groupby(['address',df['used_at'].dt.year])['ID'].value_counts().reset_index(name='b')
print df1

    address  used_at                                ID  b
0   auto.ru     2014  4be390eefaf9a64e7cb52937c4a5c77a  1
1  avito.ru     2014  690ef4613fd977f9c29e1124b9d5814c  7
2  avito.ru     2014  bcb0cc3d7f01dc6297f1331362a0fc09  3
3  avito.ru     2015  bcb0cc3d7f01dc6297f1331362a0fc09  3
4   drom.ru     2014  4be390eefaf9a64e7cb52937c4a5c77a  2
5     e1.ru     2014  4be390eefaf9a64e7cb52937c4a5c77a  9
6     e1.ru     2015  bcb0cc3d7f01dc6297f1331362a0fc09  1

编辑:

我发现Series和填充DataFrame的交叉点的最终长度为Series,其中包含所有组合的名称:

import pandas as pd
import itertools

df = pd.read_csv("avito_trend.csv", 
                      parse_dates=[2])


def f(df):
    dfs = []
    for x in [list(x) for x in itertools.combinations(df['address'].unique(), 2)]:

        c1 = df.loc[df['address'].isin([x[0]]), 'ID']
        c2 = df.loc[df['address'].isin([x[1]]), 'ID']
        c = pd.Series(list(set(c1).intersection(set(c2))))
        dfs.append(pd.DataFrame({'a':len(c), 'b':' and '.join(x)}, index=[0]))
    return pd.concat(dfs)

print df.groupby([df['used_at'].dt.year]).apply(f).reset_index(drop=True, level=1).reset_index()
    used_at     a                                    b
0      2014  1364                   avito.ru and e1.ru
1      2014  1716                 avito.ru and drom.ru
2      2014  1602                 avito.ru and auto.ru
3      2014   299           avito.ru and avtomarket.ru
4      2014   579                   avito.ru and am.ru
5      2014   602             avito.ru and irr.ru/cars
6      2014   424       avito.ru and cars.mail.ru/sale
7      2014   634                    e1.ru and drom.ru
8      2014   475                    e1.ru and auto.ru
9      2014   139              e1.ru and avtomarket.ru
10     2014   224                      e1.ru and am.ru
11     2014   235                e1.ru and irr.ru/cars
12     2014   154          e1.ru and cars.mail.ru/sale
13     2014   874                  drom.ru and auto.ru
14     2014   247            drom.ru and avtomarket.ru
15     2014   394                    drom.ru and am.ru
16     2014   423              drom.ru and irr.ru/cars
17     2014   292        drom.ru and cars.mail.ru/sale
18     2014   243            auto.ru and avtomarket.ru
19     2014   408                    auto.ru and am.ru
20     2014   409              auto.ru and irr.ru/cars
21     2014   330        auto.ru and cars.mail.ru/sale
22     2014   133              avtomarket.ru and am.ru
23     2014   139        avtomarket.ru and irr.ru/cars
24     2014   105  avtomarket.ru and cars.mail.ru/sale
25     2014   223                am.ru and irr.ru/cars
26     2014   166          am.ru and cars.mail.ru/sale
27     2014   197    irr.ru/cars and cars.mail.ru/sale
28     2015  1153                   avito.ru and e1.ru
29     2015  1473                 avito.ru and auto.ru
30     2015  1491                 avito.ru and drom.ru
31     2015   403             avito.ru and irr.ru/cars
32     2015   205           avito.ru and avtomarket.ru
33     2015   256       avito.ru and cars.mail.ru/sale
34     2015   262                   avito.ru and am.ru
35     2015   451                    e1.ru and auto.ru
36     2015   539                    e1.ru and drom.ru
37     2015   148                e1.ru and irr.ru/cars
38     2015   105              e1.ru and avtomarket.ru
39     2015   105          e1.ru and cars.mail.ru/sale
40     2015    99                      e1.ru and am.ru
41     2015   799                  auto.ru and drom.ru
42     2015   288              auto.ru and irr.ru/cars
43     2015   162            auto.ru and avtomarket.ru
44     2015   195        auto.ru and cars.mail.ru/sale
45     2015   224                    auto.ru and am.ru
46     2015   277              drom.ru and irr.ru/cars
47     2015   175            drom.ru and avtomarket.ru
48     2015   189        drom.ru and cars.mail.ru/sale
49     2015   187                    drom.ru and am.ru
50     2015    73        irr.ru/cars and avtomarket.ru
51     2015    94    irr.ru/cars and cars.mail.ru/sale
52     2015   102                irr.ru/cars and am.ru
53     2015    48  avtomarket.ru and cars.mail.ru/sale
54     2015    72              avtomarket.ru and am.ru
55     2015    73          cars.mail.ru/sale and am.ru