重塑 pandas 中的数据框以水平布局数据
reshape dataframe in pandas to layout data horizontally
我有以下数据框:
data = [['label1', 1234], ['label1', 12345], ['label2', 2345], ['label2', 4567], ['label3', 123], ['label2', 4589]]
pd.DataFrame(data, columns=['label', 'id'])
输出:
label id
0 label1 1234
1 label1 12345
2 label2 2345
3 label2 4567
4 label3 123
5 label2 4589
我想将数据重塑为以下内容:
label id1 id2 id3
0 label1 1234 12345 None
1 label2 2345 4567 4589
2 label3 123 None None
基本上水平排列id,并为id添加唯一标签,每行在标签上键入。
我正在查看 pandas 中的旋转操作,但我似乎无法弄清楚我需要以输出所需的格式获取数据的确切咒语。
如有任何帮助,我们将不胜感激!
分配一个新列来枚举 ID,然后使用数据透视表:
(df.assign(ids='id' + (df.groupby('label').cumcount()+1).astype(str))
.pivot(index='label', columns='ids', values='id'))
Out:
ids id1 id2 id3
label
label1 1234.0 12345.0 NaN
label2 2345.0 4567.0 4589.0
label3 123.0 NaN NaN
我有以下数据框:
data = [['label1', 1234], ['label1', 12345], ['label2', 2345], ['label2', 4567], ['label3', 123], ['label2', 4589]]
pd.DataFrame(data, columns=['label', 'id'])
输出:
label id
0 label1 1234
1 label1 12345
2 label2 2345
3 label2 4567
4 label3 123
5 label2 4589
我想将数据重塑为以下内容:
label id1 id2 id3
0 label1 1234 12345 None
1 label2 2345 4567 4589
2 label3 123 None None
基本上水平排列id,并为id添加唯一标签,每行在标签上键入。
我正在查看 pandas 中的旋转操作,但我似乎无法弄清楚我需要以输出所需的格式获取数据的确切咒语。
如有任何帮助,我们将不胜感激!
分配一个新列来枚举 ID,然后使用数据透视表:
(df.assign(ids='id' + (df.groupby('label').cumcount()+1).astype(str))
.pivot(index='label', columns='ids', values='id'))
Out:
ids id1 id2 id3
label
label1 1234.0 12345.0 NaN
label2 2345.0 4567.0 4589.0
label3 123.0 NaN NaN