gpt4 book ai didi

python - 按名称将列组融合到目标列中

转载 作者:行者123 更新时间:2023-11-28 22:19:00 24 4
gpt4 key购买 nike

这个问题建立在 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 函数,因为我无法将分隔符参数设置为“_”或“__”。我希望你能理解我的问题。

最佳答案

你可以使用@Wen最喜欢的pd.wide_to_long:

pd.wide_to_long(df,['a','b','c'],i='id',j='new',sep='_',suffix='.')\
.reset_index('new', drop=True)\
.sort_index()

输出:

     a   b   c
id
101 a 1 aa
101 b 2 bb
101 c 3 cc
101 d 4 dd
101 e 5 ee
101 f 6 ff
102 g 7 gg
102 h 8 hh
102 i 9 ii
102 j 10 jj
102 k 11 kk
102 l 12 ll

关于python - 按名称将列组融合到目标列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50103549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com