gpt4 book ai didi

python - 删除短语和括号并对数据框进行排序

转载 作者:行者123 更新时间:2023-12-01 07:00:00 24 4
gpt4 key购买 nike

给定示例数据框:

df = 

multi
0 MULTIPOLYGON(((1.1 1.2, 2.1 2.2)))
1 MULTIPOLYGON(((3.1 3.2, 4.1 4.2)))
2 MULTIPOLYGON(((5.1 5.2, 6.1 6.1)))

不合理的输出:

df = 

a_1 b_1 a_2 b_2 a_3 b_3
1.1 1.2 3.1 3.2 5.1 5.2
2.1 2.2 4.1 4.2 6.1 6.2
<小时/>

我做了很长的过程,即使放在这里也很糟糕。

  1. 第一步:

删除MULTIPOLYGON,然后删除(((,然后)))

  • 第二步:
  • 用逗号分割

  • 第三步:
  • 转置然后按空间分割

    我确信应该有更好、更明智的方法来做到这一点(在 excel 上很容易做到,但我需要用 python 做到)

    最佳答案

    使用str.extractstr.splittransformpd.concat:

    我们可以通过多个步骤来完成此操作:

    1. 首先我们提取 ((( ... ))) 之间的数字
    2. 然后我们对 进行拆分, 并将行转换为列
    3. 我们在空格上分割每两个数字,并并排连接新数据
    temp = df['multi'].str.extract('\(\(\((.*)\)\)\)')[0].str.split(',', expand=True).T

    df_new = pd.concat(
    [temp[col].str.strip().str.split(' ', expand=True)\
    .rename(columns={0:f'a_{n+1}', 1:f'b_{n+1}'})
    for n, col in enumerate(temp.columns)], axis=1
    )

    输出

       a_1  b_1  a_2  b_2  a_3  b_3
    0 1.1 1.2 3.1 3.2 5.1 5.2
    1 2.1 2.2 4.1 4.2 6.1 6.2
    <小时/>

    更多说明:

    列表理解看起来相当复杂,所以写成一个普通的for循环,它是:

    newdata = []
    for n, col in enumerate(temp.columns):
    dftemp = temp[col].str.strip().str.split(' ', expand=True)
    dftemp = dftemp.rename(columns={0:f'a_{n+1}', 1:f'b_{n+1}'})

    newdata.append(dftemp)

    newdf = pd.concat(newdata, axis=1)

    关于python - 删除短语和括号并对数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58683101/

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