我有这样的数据
userid day x y
user1 monday 1 2
user1 tuesday 3 4
user2 monday 10 11
user2 tuesday 12 13
我想将其转换为
userid monday_x monday_y tuesday_x tuesday_y
user1 1 2 3 4
user2 10 11 12 13
我尝试使用'pivot'功能。但我无法创建新的属性名称。 然后我尝试手动复制每一行。但是,大熊猫正在以下列方式创建。
userid monday_x monday_y tuesday_x tuesday_y
user1 1 2 NaN NaN
user1 NaN NaN 3 4
user2 10 11 NaN NaN
user2 NaN NaN 12 13
是否有内置函数在python中进行这种转换?
答案 0 :(得分:1)
pivot_table
可以在这里使用。
df = df.pivot_table(
index='userid', columns='day', values=['x', 'y'])\
.sort_index(axis=1, level=-1)\
.swaplevel(0, 1, axis=1)
df.columns = df.columns.map('_'.join)
monday_x monday_y tuesday_x tuesday_y
userid
user1 1 2 3 4
user2 10 11 12 13
如果需要,重置索引。使用df = df.reset_index()
将userid
作为列。