【发布时间】:2018-10-10 17:28:28
【问题描述】:
这个问题建立在Pandas melt several groups of columns into multiple target columns by name 之上。但是,我的数据以一种令人讨厌的方式组织
import pandas as pd
df = pd.DataFrame([(101, 'a', 'b', 'c', 'd', 'e', 'f', 1, 2, 3, 4, 5, 6, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff'),
(102,'g', 'h', 'i', 'j', 'k', 'l' , 7, 8, 9, 10, 11, 12, 'gg', 'hh', 'ii', 'jj', 'kk', 'll')],
columns=['id','a__1', 'a__2', 'a__3', 'a_1', 'a_2', 'a_3','b__1', 'b__2', 'b__3', 'b_1', 'b_2', 'b_3','c__1', 'c__2', 'c__3', 'c_1', 'c_2', 'c_3'])
df
数据框如下所示:
id a__1 a__2 a__3 a_1 a_2 a_3 b__1 b__2 b__3 b_1 b_2 b_3 c__1 c__2 \
0 101 a b c d e f 1 2 3 4 5 6 aa bb
1 102 g h i j k l 7 8 9 10 11 12 gg hh
c__3 c_1 c_2 c_3
0 cc dd ee ff
1 ii jj kk ll
正如您所见,并非所有分隔符都只有一个下划线,它们有时是两个下划线。
最后我想按以下方式组织我的数据,注意 a__1 应该在 a_1 之前,依此类推:
id a b c
0 101 a 1 aa
1 101 b 2 bb
2 101 c 3 cc
3 101 d 4 dd
4 101 e 5 ee
5 101 f 6 ff
6 102 g 7 gg
7 102 h 8 hh
8 102 i 9 ii
9 102 j 10 jj
10 102 k 11 kk
11 102 l 12 ll
基本上我的问题是,有时我不是只有一个下划线,而是 2。现在这不适用于 pd.wide_to_long 函数,因为我无法将分隔符参数设置为“_”或“__”。希望你能理解我的问题。
【问题讨论】:
-
将
__简单替换为_然后按照您提到的工作进行吗?
标签: python pandas dataframe transform