gpt4 book ai didi

python - 使用 Python 两次溢出列

转载 作者:行者123 更新时间:2023-12-05 05:50:12 25 4
gpt4 key购买 nike

我有一个像这样的大数据集 (4GB):

            userID   date   timeofday   seq
0 1000014754 20211028 20 133669542676:1:148;133658378700:1:16;133650937891:1:85
1 1000019906 20211028 6 508420199:0:0;133669581685:1:19
2 1000019906 20211028 22 133665269544:0:0

据此,我想用“;”拆分“seq”首先创建一个重命名的新数据集。它看起来像这样:

            userID   date   timeofday   seq1      seq2  seq3 ... seqN
0 1000014754 20211028 20 133669542676:1:148 133658378700:1:16 133650937891:1:85
1 1000019906 20211028 6 508420199:0:0 133669581685:1:19 None None
2 1000019906 20211028 22 133665269544:0:0 None None None

然后我想用“:”拆分 seq1,seq2,...,seqN,并创建一个重命名的新数据集。它看起来像这样:

            userID   date   timeofday   name1  click1  time1 name2 click2 time2 ....nameN clickN timeN
0 1000014754 20211028 20 133669542676 1 148 133658378700 1 16 133650937891 1 85 None None None
1 1000019906 20211028 6 508420199 0 0 133669581685 1 19 None None None None None None
2 1000019906 20211028 22 133665269544 0 0 None None None None None None None None None

我知道 pandas.split 可以拆分列,但我不知道如何有效地拆分它。谢谢!

最佳答案

一个干净的解决方案是使用正则表达式和extractall,然后使用unstack reshape 形状,重命名列并join 到原始数据框。

假设 df 数据框名称

df2 = (df['seq'].str.extractall(r'(?P<name>[^:]+):(?P<click>[^:]+):(?P<time>[^;]+);?')
.unstack('match')
.sort_index(level=1, axis=1, sort_remaining=False)
)
df2.columns = df2.columns.map(lambda x: f'{x[0]}{x[1]+1}')
df2 = df.drop(columns='seq').join(df2)

输出:

       userID      date  timeofday         name1 click1 time1         name2 click2 time2         name3 click3 time3
0 1000014754 20211028 20 133669542676 1 148 133658378700 1 16 133650937891 1 85
1 1000019906 20211028 6 508420199 0 0 133669581685 1 19 NaN NaN NaN
2 1000019906 20211028 22 133665269544 0 0 NaN NaN NaN NaN NaN NaN

关于python - 使用 Python 两次溢出列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70547721/

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