私はパンダに不慣れで、以下のようなデータフレームを持っています
id values
1 2.1
2 0.8
3 1.0
4 3.2
そして、列「値」をbin = 2のように異なるビンに分割し、次のように、ビン内にある行の数を表す列「カウント」を追加したいと思います。
id values counts
1 2.1 2 (since 2.1 and 3.2 both belong to the bin 2-4)
2 0.8 2
3 1.0 2
4 3.2 2
value_counts関数で頻度を計算できることは知っていますが、元のデータフレームに追加する方法がわかりません。
どんな助けでも大歓迎です!
使用するnumpy
のにsearchsorted
ビンを定義し、bincount
それらをカウントします。
これは非常に高速である必要があります。
# This defines the bin edges
# [1, 2, 3] would have created
# different bins
# v
b = np.searchsorted([2], df['values'].values)
df.assign(counts=np.bincount(b)[b])
id values counts
0 1 2.1 2
1 2 0.8 2
2 3 1.0 2
3 4 3.2 2
np.searchsorted
並べ替えを維持するために、最初の配列のどこに2番目の配列のすべての要素を配置する必要があるかを識別します。
2.1
の2
位置であるの後に行く必要があり1
ます。0.8
の2
位置である前に行く必要があり0
ます。1.0
の2
位置である前に行く必要があり0
ます。3.2
の2
位置であるの後に行く必要があり1
ます。np.bincount
統合ビンの頻度を便利にカウントします...先ほど作成したもののように。transform
ようになります。count
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加