我想将一个嵌套框架的几组列合并成多个目标列。类似于问题Python Pandas Melt Groups of Initial Columns Into Multiple Target Columns和pandas dataframe reshaping/stacking of multiple value variables into seperate columns。但是我需要通过列名显式地完成这一操作,而不是通过索引位置。
import pandas as pd
df = pd.DataFrame([('a','b','c',1,2,3,'aa','bb','cc'), ('d', 'e', 'f', 4, 5, 6, 'dd', 'ee', 'ff')],
columns=['a_1', 'a_2', 'a_3','b_1', 'b_2', 'b_3','c_1', 'c_2', 'c_3'])
df
字符串
原始数据框架:
id a_1 a_2 a_3 b_1 b_2 b_3 c_1 c_2 c_3
0 101 a b c 1 2 3 aa bb cc
1 102 d e f 4 5 6 dd ee ff
型
目标数据框架
id a b c
0 101 a 1 aa
1 101 b 2 bb
2 101 c 3 cc
3 102 d 4 dd
4 102 e 5 ee
5 102 f 6 ff
型
非常欢迎就如何处理这一问题提出建议。
4条答案
按热度按时间chhkpiq41#
有一种更有效的方法来解决这类涉及熔化多组不同列的问题。pandas function wide_to_long正是为这些情况而构建的。
字符串
toiithl62#
您可以根据列模式将列名转换为多索引,然后根据您需要的结果在特定级别堆叠:
字符串
k75qkfdt3#
字符串
zdwk9cvp4#
一个选项是来自pyjanitor的pivot_longer,它抽象了流程,并且很高效:
字符串
这种特殊整形的想法是,正则表达式中与
.value
配对的任何组都将作为列标题。