aeapen:
私は以下のようなデータフレームを持っていると私は列ベースの新しい列を作成したいです
調子
二つまたは複数の行が同じ列Aと列Bの値と列が含まれている場合Cは一意次に行である一意のグループ名を割り当てなければなりません
入力
A B C
Payment Mark 2
Payment Mark 3
Delayed Charles 2
Delayed Charles 4
Held Mark 3
Held Charles 4
Payment Mark 2
Payment Mark 3
Delayed Charles 4
Held Charles 4
予想される出力
A B C Cluster
Payment Mark 2 C1
Payment Mark 3 C2
Delayed Charles 2 C3
Delayed Charles 4 C4
Held Mark 3 C5
Held Charles 4 C6
Payment Mark 2 C1
Payment Mark 3 C2
Delayed Charles 4 C4
Held Charles 4 C6
これはpythonでどのように行うことができます
anky_91:
これがあるfactorize
問題。
一つの方法は、単一のシリーズに結合列となりfactorize
、add
1と初めに:add
C
df['Cluster'] = (pd.Series(df[['A','B','C']].astype(str).agg(''.join,1)
.factorize()[0]).add(1).astype(str).radd('C'))
print(df)
もう一つの方法は似ていますが、となります groupby.ngroup
df['Cluster'] = (df.groupby(['A','B','C'],sort=False).ngroup()
.add(1).astype(str).radd('C'))
A B C Cluster
0 Payment Mark 2 C1
1 Payment Mark 3 C2
2 Delayed Charles 2 C3
3 Delayed Charles 4 C4
4 Held Mark 3 C5
5 Held Charles 4 C6
6 Payment Mark 2 C1
7 Payment Mark 3 C2
8 Delayed Charles 4 C4
9 Held Charles 4 C6