我很震惊,以前没人问过这个。。因为这似乎是一个足够简单的问题。你知道吗
我在熊猫数据框中有一列,如下所示:
df = pd.DataFrame(data=[['APPLEGATE WINERY 455.292049'],['AMAND FARM 849.827192'],['COBB FARM ST 1039.49357'],['DIRIGIA 2048.947284']], columns = ['Col1'])
Col1
0 APPLEGATE WINERY 455.292049
1 AMAND FARM 849.827192
2 COBB FARM ST 1039.49357
3 DIRIGIA 2048.947284
我只想把字符串和数字分开,结果应该是这样的
Name Area
APPLEGATE WINERY 455.292049
AMAND FARM 849.827192
COBB FARM ST 1039.49357
DIRIGIA 2048.947284
我知道我可以在python中使用Regular Expressions,但这似乎有些过分,因为a)这只是数据类型的分离,b)字符串的长度不同,数字的位数也不同。你知道吗
一个结果是这样的:
df['Name'] = df.Col1.str.extract('([A-Z]\w{0,})', expand=True)
df['Area'] = df.Col1.str.extract('(\d)', expand=True)
但是,有没有一个好的、干净的解决方案来解决这个问题,而不必经历使用RegEx的麻烦,而是将字符串从数字分隔成两列?你知道吗
你可以用rsplit。它会从右边开始把绳子分开。你知道吗
感觉你可以做
str.rsplit
使用一个
extract
调用。如果使用这个正则表达式,还需要从结果中去掉尾随空格。你知道吗正则表达式细分
PS,要将“Area”列转换为数字,请使用
pd.to_numeric
。你知道吗相关问题 更多 >
编程相关推荐