IIUC、あなたはまず、
>>> df = df.drop_duplicates()
>>> df = df.sort_values(["id", "X"])
>>> df["xcol"] = "x" + (df.groupby("id")["X"].rank().astype(int)).astype(str)
>>> df = df.pivot(index="id", columns="xcol", values="X")
>>> df
xcol x1 x2 x3
id
1 1 2 NaN
2 2 3 NaN
3 3 4 5
4 3 4 6
ステップ・バイ・ステップのような何かを行うことができます(その後、我々はGROUPBYの要素をランク付けし、私たちが列に使用するつもり適切な値を構築することができます
>>> df = df.drop_duplicates()
>>> df = df.sort_values(["id", "X"])
>>> df
X id
0 1 1
1 2 1
2 2 2
3 3 2
7 3 3
4 4 3
5 5 3
10 3 4
11 4 4
12 6 4
を:私たちは、重複を削除してソートすることができます
>>> df["xcol"] = "x" + (df.groupby("id")["X"].rank().astype(int)).astype(str)
>>> df
X id xcol
0 1 1 x1
1 2 1 x2
2 2 2 x1
3 3 2 x2
7 3 3 x1
4 4 3 x2
5 5 3 x3
10 3 4 x1
11 4 4 x2
12 6 4 x3
をし、最終的に我々は、ピボット::cumcount
)はここにも働いているだろう
>>> df = df.pivot(index="id", columns="xcol", values="X")
>>> df
xcol x1 x2 x3
id
1 1 2 NaN
2 2 3 NaN
3 3 4 5
4 3 4 6
あなたが主張している場合我々は、正確にご説明した出力形式を得ることができます:
>>> df.columns.name = None
>>> df.reset_index()
id x1 x2 x3
0 1 1 2 NaN
1 2 2 3 NaN
2 3 3 4 5
3 4 3 4 6
出典
2016-03-22 21:11:15
DSM
を「流血について時間!"ちょっと変わっていませんが、編集するにはあまりにも遠すぎると思っていました。 –
以下の議論から私の答え、私は今これが不明であることを示唆しなければなりません。 –
ポイントを獲得しました。私は "血まみれの時間について"謝罪します。それを質問から削除しました。 –