私のパンダのデータフレーム(df
)(列内のいくつかの文字列を持っていますm
)
df = pd.DataFrame({"m": ['0 = absence\n1 = mild\n2 = moderate \n3 = severe','0 = no \n1 = yes\n2 = Not relevant','1: smoker\n2: ex-smoker (not smoked)'], "c": [1,1,1], "x":[5,3,6]})
これにより、次のデータフレームが作成されます。
今、私は列の各文字列を分割する必要がm
最初で\n
、その後で=
または:
それこのような辞書にするために、:
これを行うコンパクトな方法はありますか?
ここにmap
必要な方法があるようです:
import re
df.loc[:, 'm'] = df['m'].map(lambda x: dict(map(lambda y: re.split(' = |: ', y), x.split('\n'))))
出力は次のようになります。
m c x
0 {'0': 'absence', '1': 'mild', '2': 'moderate '... 1 5
1 {'0': 'no ', '1': 'yes', '2': 'Not relevant'} 1 3
2 {'1': 'smoker', '2': 'ex-smoker (not smoked)'} 1 6
キーが数字として必要な場合は、次の行を追加できます。
df.loc[:, 'm'] = df['m'].map(lambda x: {int(k): v for k, v in x.items()})
出力:
m c x
0 {0: 'absence', 1: 'mild', 2: 'moderate ', 3: '... 1 5
1 {0: 'no ', 1: 'yes', 2: 'Not relevant'} 1 3
2 {1: 'smoker', 2: 'ex-smoker (not smoked)'} 1 6
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加