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

Python 跨多个数据帧计算一列中的唯一值,python,pandas,dataframe,unique,Python,Pandas,Dataframe,Unique,是否可以使用pandas跨多个数据帧从一列计算唯一值 示例 columnname在每个数据帧中,必须搜索唯一的值='userid' df1:1,2,3,4 df2:1,2,3 df3:5,6,7 输出=7 所有数据帧的'userid'列中的唯一值 谢谢 访问所有数据帧中的userId列,然后调用pd.concat和pd.Series.nunique df1 userId 0 1 1 2 2 3 3 4 df2 userId 0

是否可以使用pandas跨多个数据帧从一列计算唯一值

示例

columnname在每个数据帧中,必须搜索唯一的值='userid'

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

所有数据帧的'userid'列中的唯一值

谢谢

访问所有数据帧中的
userId
列,然后调用
pd.concat
pd.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
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

在我看来,这些不像数据帧。一些真实的数据怎么样?或者,所有的数据帧都有一个列用户ID吗?@JohnGalt打电话给我真的很容易。。。只需键入@c,然后点击tab。c不是unicode;-)@cᴏʟᴅᴘᴇᴇᴅ 所有数据帧都有一个名为userId的列