用 pandas 中的单词删除左括号和右括号 [英] Remove opening and closing parenthesis with word in pandas

查看:108
本文介绍了用 pandas 中的单词删除左括号和右括号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

df = 

                         multi
0 MULTIPOLYGON(((3 11, 2 33)))
1 MULTIPOLYGON(((4 22, 5 66)))

我试图删除单词'MULTIPOLYGON'和括号"((((',')))'


我的尝试:

I was trying to remove the word 'MULTIPOLYGON', and parenthesis '(((', ')))'

df['multi'] = df['multi'].str.replace(r"\(.*\)","")
df['multi'] = df['multi'].map(lambda x: x.lstrip('MULTIPOLYGON()').rstrip('aAbBcC'))

df.values = 

array([[''],
       [''],
       ...
       [''],
       [''],
       [''],
       ['7.5857754821 44.9628409423']


所需的输出:

df = 

     multi
3 11, 2 33
 4 22, 5 6

推荐答案

尝试一下:

    import pandas as pd
import re 
def f(x):
    x = ' '.join(re.findall(r'[0-9, ]+',x))
    return x

def f2(x):
    x = re.findall(r'[0-9, ]+',x)

    return pd.Series(x[0].split(','))       


df =pd.DataFrame({'a':['MULTIPOLYGON(((3 11, 2 33)))' ,'MULTIPOLYGON(((4 22, 5 6)))']})
df['a'] = df['a'].apply(f)
print(df)
#or for different columns you can do
df =pd.DataFrame({'a':['MULTIPOLYGON(((3 11, 2 33)))' ,'MULTIPOLYGON(((4 22, 5 6)))']})
#df['multi'] = df.a.str.replace('[^0-9. ]', '', regex=True)
#print(df)
list_of_cols = ['c1','c2']
df[list_of_cols] = df['a'].apply(f2)
del df['a']
print(df)

输出:

            a
0  3 11, 2 33
1   4 22, 5 6
     c1     c2
0  3 11   2 33
1  4 22    5 6
[Finished in 2.5s]

这篇关于用 pandas 中的单词删除左括号和右括号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆