Python 如何使用模式从字符串中提取数字?
我在一个数据框中有以下十行。我想提取[49,49]、[31,78]等(每行)中的坐标Python 如何使用模式从字符串中提取数字?,python,string,pandas,design-patterns,extract,Python,String,Pandas,Design Patterns,Extract,我在一个数据框中有以下十行。我想提取[49,49]、[31,78]等(每行)中的坐标 我尝试使用字符串提取,但我无法找出模式 这就是我试过的。不过,我不确定自己是否理解这一点: b是数据帧,positions是列 b.positions.str.extract("""[{'y': (\d+), 'x': (\d+)}],""") [{'y': 49, 'x': 49}, {'y': 78, 'x': 31}] [{'y': 78, 'x': 31}, {'y': 75, 'x': 51}] [
我尝试使用字符串提取,但我无法找出模式 这就是我试过的。不过,我不确定自己是否理解这一点: b是数据帧,positions是列
b.positions.str.extract("""[{'y': (\d+), 'x': (\d+)}],""")
[{'y': 49, 'x': 49}, {'y': 78, 'x': 31}]
[{'y': 78, 'x': 31}, {'y': 75, 'x': 51}]
[{'y': 75, 'x': 51}, {'y': 71, 'x': 35}]
[{'y': 71, 'x': 35}, {'y': 95, 'x': 41}]
[{'y': 95, 'x': 41}, {'y': 88, 'x': 72}]
[{'y': 88, 'x': 72}, {'y': 75, 'x': 77}]
[{'y': 25, 'x': 23}, {'y': 15, 'x': 39}]
[{'y': 15, 'x': 39}, {'y': 20, 'x': 33}]
[{'y': 85, 'x': 61}, {'y': 80, 'x': 67}]
[{'y': 80, 'x': 67}, {'y': 61, 'x': 59}]
[{'y': 61, 'x': 59}, {'y': 45, 'x': 45}]
尝试str.extractall和命名捕获组。
假设包含字符串的源列名为col1,则代码为:
df.col1.str.extractall(r"'y': (?P<y>\d+), 'x': (?P<x>\d+)")
结果的多索引中的第一级(未命名)是
从源行创建索引。
第二级(命名为match)是当前行的匹配号,
从0开始。您的列是字符串还是实际类型的列表,每个列表中有两个字典?如何
df['col'].apply(lambda x:[i.values()代表i in x])
我正在使用spyder,通过变量管理器选择整个列,然后右键单击->to str,我假设它已转换为字符串“我试图使用字符串提取”-我们可以看看你的代码,编辑成问题吗?谢谢!@anky_91我得到:AttributeError:'str'对象没有属性'values'。谢谢。这太棒了!
y x
match
0 0 49 49
1 78 31
1 0 78 31
1 75 51
2 0 75 51
1 71 35
3 0 71 35
1 95 41
4 0 95 41
1 88 72
5 0 88 72
1 75 77
6 0 25 23
1 15 39
7 0 15 39
1 20 33
8 0 85 61
1 80 67
9 0 80 67
1 61 59
10 0 61 59
1 45 45