melo777:
私はパンダのデータフレームで、次の10行を持っています。私は[31,78]など(各行の)、[49,49]のように座標を抽出します。
私は、文字列の抽出物を使用しようとしましたが、私は、パターンを見つけ出すことができませんでした。
これは私が試したものです。私は確かに私は、これはかかわらず、どのように動作するかを理解していないです。
Bデータフレームと位置がカラムであります
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}]
Valdi_Bo:
試してみてくださいstr.extractallと名前のキャプチャグループを。あなたの文字列を保持するソース列の名前があると仮定するとCOL1、コードは次のとおりです。
df.col1.str.extractall(r"'y': (?P<y>\d+), 'x': (?P<x>\d+)")
あなたのサンプルデータの場合、結果は次のとおりです。
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
結果のマルチインデックス(名前)の最初のレベルは、ソース行のインデックスです。第二レベル(名前一致が)から出発して、現在の行の一致の数、である0。