python - 取消透视数据框并加入熊猫
问题描述
我有这个数据框:
+-------+-----+---------+
| group | id | value |
+-------+-----+---------+
| A | 92 | 123.123 |
| A | 105 | 9034 |
| A | 999 | 421 |
| B | 92 | 32019 |
| B | 105 | 3281 |
+-------+-----+---------+
我想旋转“组”列,使其值成为“值”列名称的一部分,并且观察结果由“id”连接,如下所示:
+-----+---------+---------+
| id | A_value | B_value |
+-----+---------+---------+
| 92 | 123.123 | 32019 |
| 105 | 9034 | 3281 |
| 999 | 421 | nan |
+-----+---------+---------+
这样做的最佳方法是什么?
解决方案
使用set_index
,unstack
并展平多索引:
df_out = df.set_index(['id','group']).unstack()
df_out.columns = df_out.columns.map('{0[1]}_{0[0]}'.format)
df_out = df_out.reset_index()
print(df_out)
输出:
id A_value B_value
0 92 123.123 32019.0
1 105 9034.000 3281.0
2 999 421.000 NaN
推荐阅读
- selenium - 自动日期采摘硒
- python - 我想在我的文本文件中打印以特定许可证号开头的行,但这仅在许可证号在第一行时才会打印出来
- arrays - Excel:VLookup 公式对数组值的多个(排序)结果
- c++ - 当 j=3 时,为什么它在 a 和 b 之后打印 a 和 b 而不是 c 在第二个循环中打印 ab 对于 which (counter &(1<
我一直在试图理解为什么输出不是所有元素都只打印第一个和第二个单独打印而不是第三个它开始组合而不是单个三分之一,因为当 j=3 时仍然在第二个循环中(计数器&(1<<j)) 也是如此。所以这里是代码:
- java - 在Java中将连续两个json的字符串拆分为两个json
- typo3 - Extbase 正确的关系发现
- javascript - 在 JavaScript 中在函数外部分配变量
- python - 如果 Julia 中可以使用类似 f 字符串的字符串格式?
- java - 我的设置活动使我的应用程序崩溃(使用共享首选项)
- python - 打印可以等于给定数字的所有 3 个连续数字