python - Pandas,将多行转换为多列
问题描述
我有一个样本数据
Index, Column1,Value1
1, 1,6
1, 2,7
1, 3,8
Index, Column1,Value1
2, 11,16
2, 12,17
2, 13,18
2, 14,19
2, 15,20
Index, Column1,Value1
3, 21,24
3, 22,25
我想以这种方式重塑
Index Column1, Value1, Column2, Value2, Column3, Value3, Column4, Value4
1 1, 6, 2, 7, 3, 8
2 11, 16, 12, 17, 13, 18, 14, 19
3 21, 24, 22, 25
我正在使用这个
print(df.groupby('Index')[['Column1', 'Value1']].apply(','.join).reset_index())
但我得到了奇怪的输出。我在这里做错了什么?有什么建议么 ?
Index 0
1 Column1,Value1
2 Column1,Value1
3 Column1,Value1
Index Column1,Value1
解决方案
编辑:
3列输入DataFrame的解决方案:
df = df[df['Column1'] != 'Column1']
s = df.groupby('Index').cumcount().add(1)
df = (df.set_index(['Index',s])
.unstack()
.sort_index(axis=1, level=1)
)
df.columns = ['{}_{}'.format(a, b) for a,b in df.columns]
df = df.reset_index()
print (df)
Index Column1_1 Value1_1 Column1_2 Value1_2 Column1_3 Value1_3 Column1_4 \
0 1 1 6 2 7 3 8 NaN
1 2 11 16 12 17 13 18 14
2 3 21 24 22 25 NaN NaN NaN
Value1_4 Column1_5 Value1_5
0 NaN NaN NaN
1 19 15 20
2 NaN NaN NaN
推荐阅读
- botframework - 在 SDK-4.0 中创建表单流
- ruby-on-rails - Rails (5.2.2) AJAX 调用部分不工作
- android - 如何获取json数组
- excel - Excel VBA粘贴从活动单元格到合并单元格的偏移量
- c++ - 在 C-struct 中查找相同的元素
- javascript - react-admin 通过自定义表单刷新 dataGrid
- mongodb - 如何在 MongoDB 中使用 map reduce 求平均值?
- r - 如何在ggplot中修改x轴上的时间?
- php - 如何在 Term_Meta 上解析图像附件的 URL?
- variables - 如何使用方法更改变量的值?