パンダを使用して複数のデータフレームにわたって1つの列から一意の値を数えることはできますか?複数のデータフレームにわたって1つの列から一意の値を集計する
例
一意値= 'ユーザーID' カラム'ユーザID' で
df1: 1, 2, 3, 4 df2: 1, 2, 3 df3: 5, 6, 7 output = 7
一意の値を検索する必要があり、すべてのデータフレームでColumnNameの全部でデータフレーム
ありがとうございました!
パンダを使用して複数のデータフレームにわたって1つの列から一意の値を数えることはできますか?複数のデータフレームにわたって1つの列から一意の値を集計する
例
一意値= 'ユーザーID' カラム'ユーザID' で
df1: 1, 2, 3, 4 df2: 1, 2, 3 df3: 5, 6, 7 output = 7
一意の値を検索する必要があり、すべてのデータフレームでColumnNameの全部でデータフレーム
ありがとうございました!
すべてのデータフレームの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
は、それらは私にはデータフレームのようには見えません。 _real_データはどうですか? –
また、すべてのデータフレームにuserIdという列がありますか? –
@JohnGalt私に電話するのは本当に簡単です。ちょうど@cと打ってからタブを押してください。 cはユニコードではありません;-) –