と列でグループパンダのデータフレームをする私は、次のデータフレームを持っている:どのように正規表現マッチ
次のようになりますimport pandas as pd
df = pd.DataFrame({'id':['a','b','c','d','e'],
'XX_111_S5_R12_001_Mobile_05':[-14,-90,-90,-96,-91],
'YY_222_S00_R12_001_1-999_13':[-103,0,-110,-114,-114],
'ZZ_111_S00_R12_001_1-999_13':[1,2.3,3,5,6],
})
df.set_index('id',inplace=True)
df
:私は何をしたいか
Out[6]:
XX_111_S5_R12_001_Mobile_05 YY_222_S00_R12_001_1-999_13 ZZ_111_S00_R12_001_1-999_13
id
a -14 -103 1.0
b -90 0 2.3
c -90 -110 3.0
d -96 -114 5.0
e -91 -114 6.0
グループに列です最後にそれはMobile
、およびごとにグループ化されていますようにするため
\w+_\w+_\w+_\d+_([\w\d-]+)_\d+
次の正規表現に基づいて、。
どうすればいいですか?私はこれを試してみましたが、グループにそれらを失敗:
Mobile
1-999
1-999
そしてgroup
プリントに対応するデータ・フレーム:私たちが望む何
XX_111_S5_R12_001_Mobile_05
YY_222_S00_R12_001_1-999_13
ZZ_111_S00_R12_001_1-999_13
がname
版画にある版画
import re
grouped = df.groupby(lambda x: re.search("\w+_\w+_\w+_\d+_([\w\d-]+)_\d+", x).group(), axis=1)
for name, group in grouped:
print name
print group
を。
あなたが達成しようとしているかについて、いくつかの追加の詳細を与えるだろうか?元のデータフレームに3つのカラムしかない場合は、groupbyに3つのグループを出力しようとしているようです。さらに、groupbyの定義によって、グループ名/ラベル(あなたは 'name'と呼ばれました)はユニークなものなので、あなたが記述した望ましい出力は不可能です。最も近いのは、ラベルの行(モバイルと1-999)を作成し、代わりにグループ内のラベルを使用することですが、これがあなたがしようとしているものに関連するかどうかはわかりません。 –