我有一個看起來像這樣的資料框:
key variable1 variable2 variable3
A x 5 s
A x 6 t
A x 6 t
B x 5 s
B x 6 t
B x 6 t
我想用這種結構創建一個新的資料框
key variable1 variable2 variable3 variable4 variable5 variable6 variable7 variable8 variable9
A x 5 s x 6 t x 6 t
B x 5 s x 6 t x 6 t
如果那里只有 2 個重復鍵我會知道該怎么做,但在這種情況下我每個鍵有 3 個重復項(先洗掉重復項然后最后合并)
我查看了其他問題,但沒有找到這樣的案例。
感謝您的時間!
uj5u.com熱心網友回復:
將DataFrame.set_index
withGroupBy.cumcount
用于計數器、重塑DataFrame.unstack
和最后設定串列理解中的新列名稱:
df1 = (df.set_index(['key',df.groupby('key').cumcount()])
.unstack()
.sort_index(axis=1, level=1))
df1.columns = [f'variable{x}' for x in range(1, len(df1.columns) 1)]
print (df1)
variable1 variable2 variable3 variable4 variable5 variable6 variable7 \
key
A x 5 s x 6 t x
B x 5 s x 6 t x
variable8 variable9
key
A 6 t
B 6 t
如有必要,最后:
df1 = df1.reset_index()
替代解決方案DataFrame.pivot
:
df1 = (df.assign(g = df.groupby('key').cumcount())
.pivot(index='key', columns='g')
.sort_index(axis=1, level=1))
df1.columns = [f'variable{x}' for x in range(1, len(df1.columns) 1)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533408.html