次のように私はパンダのデータフレームを持っている:`pandas.cut()`を使用して、ビニングされる列以外の列に基づいてデータをビンする方法は?
import pandas as pd
import numpy as np
data = {"first_column": ["item1", "item2", "item3", "item4", "item5", "item6", "item7"],
"second_column": ["cat1", "cat1", "cat1", "cat2", "cat2", "cat2", "cat2"],
"third_column": [5, 1, 8, 3, 731, 189, 9]}
df = pd.DataFrame(data)
df
first_column second_column third_column
0 item1 cat1 5
1 item2 cat1 1
2 item3 cat1 8
3 item4 cat2 3
4 item5 cat2 731
5 item6 cat2 189
6 item7 cat2 9
さて、私はpandas.cut()
を使用して3列目の分類を示す4番目の列を作成したいとしましょう。ここでは、third_column
の要素が10以下であるかどうかを各行にラベルします。<=10
。
df["less_than_ten"]= pd.cut(df.third_column, [-np.inf, 10, np.inf], labels=(1,0))
、そして得られたデータフレームは、以下のようになります。
first_column second_column third_column less_than_ten
0 item1 cat1 5 1
1 item2 cat1 1 1
2 item3 cat1 8 1
3 item4 cat2 3 1
4 item5 cat2 731 0
5 item6 cat2 189 0
6 item7 cat2 9 1
質問:カテゴリcat1
とcat2
と第二のカラムsecond_column
を、注意してください。 pandas.cut()
を使用してsecond_column
の「クラス」に基づいてこれらの値を再分類するにはどうすればよいですか?
cat1
の場合、third_column
の値に0または1のラベルを付けることができます。< = 10です。 cat2
については、third_column
の値で2または3を< = 10(2つのいいえ、3つのはい)とラベルできます。
このデータフレームは、次のようになります。
first_column second_column third_column less_than_ten
0 item1 cat1 5 1
1 item2 cat1 1 1
2 item3 cat1 8 1
3 item4 cat2 3 3
4 item5 cat2 731 2
5 item6 cat2 189 2
6 item7 cat2 9 3
1がこれをどのように行うのですか?私は、他の列のカテゴリ値に基づいて、パンダのデータフレーム内のある列のデータをビニングしています。
おかげ
assign
が好きです。もっと複雑な区間が必要だとしましょう。 1000 le(1000)以下、20 ge(20)以上です。これはどのようにして行われますか? – ShanZhengYangこの場合、 'pd.cut()'が必要でしょうか? – ShanZhengYang