python - 删除熊猫中单词的左括号和右括号
问题描述
给定一个数据框:
df =
multi
0 MULTIPOLYGON(((3 11, 2 33)))
1 MULTIPOLYGON(((4 22, 5 66)))
我试图删除单词'MULTIPOLYGON'和括号 ' ((( ', ' ))) '
我的尝试:
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
解决方案
您可以通过以下方式使用 df.column.str。
df['a'] = df['a'].str.findall(r'[0-9.]+')
df = pd.DataFrame(df['a'].tolist())
print(df)
输出:
0 1
0 3.49 11.10
1 4.49 22.12
这适用于任意数量的列。但最后你必须命名这些列。
df.columns = ['a'+str(i) for i in range(df.shape[1])]
即使某些行具有不同数量的数值,此方法也将起作用。喜欢
df =pd.DataFrame({'a':['MULTIPOLYGON(((3.49)))' ,'MULTIPOLYGON(((4.49 22.12)))']})
a
0 MULTIPOLYGON(((3.49)))
1 MULTIPOLYGON(((4.49 22.12)))
所以预期的输出是
0 1
0 3.49 None
1 4.49 22.12
使用命名列后,
df.columns = ['a'+str(i) for i in range(df.shape[1])]
你得到,
a0 a1
0 3.49 None
1 4.49 22.12