Python 数据帧的异常重塑
我有这样一个DF:Python 数据帧的异常重塑,python,pandas,pivot,reshape,Python,Pandas,Pivot,Reshape,我有这样一个DF: df = pd.DataFrame({'x': ['a', 'a', 'b', 'b', 'b', 'c'], 'y': [1, 2, 3, 4, 5, 6], }) 这看起来像: x y 0 a 1 1 a 2 2 b 3 3 b 4 4 b 5 5 c 6 我需要对其进行重塑,以保持“x”列的唯一性: x y_1 y_2 y_3 0 a 1
df = pd.DataFrame({'x': ['a', 'a', 'b', 'b', 'b', 'c'],
'y': [1, 2, 3, 4, 5, 6],
})
这看起来像:
x y
0 a 1
1 a 2
2 b 3
3 b 4
4 b 5
5 c 6
我需要对其进行重塑,以保持“x”列的唯一性:
x y_1 y_2 y_3
0 a 1 2 NaN
1 b 3 4 5
2 c 6 NaN NaN
所以“y_N”列的最大N必须等于
max(df.groupby('x').count().values)
x列必须包含唯一的值
现在,我不知道如何得到你的专栏
谢谢。您可以使用
pandas.crosstab
和cumcount
列作为columns
参数:
(pd.crosstab(df.x, df.groupby('x').cumcount() + 1, df.y,
aggfunc = lambda x: x.iloc[0])
.rename(columns="y_{}".format).reset_index())
您可以使用
pandas.crosstab
和cumcount
列作为columns
参数:
(pd.crosstab(df.x, df.groupby('x').cumcount() + 1, df.y,
aggfunc = lambda x: x.iloc[0])
.rename(columns="y_{}".format).reset_index())
谢谢!非常好的解决方案,谢谢!绝妙的解决方案。