计算跨多个数据帧的一列中的唯一值

时间:2017-09-15 12:02:50

标签: python pandas dataframe unique

是否可以使用pandas计算多个数据帧中一列的唯一值?

示例

每个数据框中的

列名,必须搜索唯一的值='用户ID'

df1: 1, 2, 3, 4 df2: 1, 2, 3 df3: 5, 6, 7 output = 7

所有数据框' userid' 中的唯一值
谢谢!

2 个答案:

答案 0 :(得分:1)

访问所有数据框中的userId列,然后调用pd.concatpd.Series.nunique

df1
   userId
0       1
1       2
2       3
3       4

df2
   userId
0       1
1       2
2       3

df3 
   userId
0       5
1       6
2       7

series_list = [x['userId'] for x in [df1, df2, df3]]
count = pd.concat(series_list).nunique()

count
7

答案 1 :(得分:1)

Numpy可以很快,使用

In [255]: np.unique(np.hstack([d['userId'].values for d in [df1, df2, df3]])).size
Out[255]: 7

计时

In [251]: [d.shape for d in [df1, df2, df3]]
Out[251]: [(4000, 1), (3000, 1), (3000, 1)]

In [253]: %timeit np.unique(np.hstack([d['userId'].values for d in [df1, df2, df3]])).size
10000 loops, best of 3: 184 µs per loop

In [254]: %timeit pd.concat([x['userId'] for x in [df1, df2, df3]]).nunique()
1000 loops, best of 3: 885 µs per loop