次のようなデータフレームがあります。
Name Volume Value
May21 23 21321
James 12 12311
Adi22 11 4435
Hello 34 32454
Girl90 56 654654
出力を次の形式にする必要があります。
Name Volume Value
May 23 21321
James 12 12311
Adi 11 4435
Hello 34 32454
Girl 56 654654
[名前]列からすべての数字を削除したい。
私が最も近づいたのは、次のコードでcellレベルでそれをやっていることです:
result = ''.join([i for i in df['Name'][1] if not i.isdigit()])
series/dataframeレベルでより良い方法でそれを行う方法についてのアイデア。
正規表現と組み合わせてName
列に str.replace を適用できます。
_import pandas as pd
# Create example DataFrame
a = pd.DataFrame.from_dict({'Name': ['May21', 'James', 'Adi22', 'Hello', 'Girl90'], 'Volume': [23, 12, 11, 34, 56], 'Value': [21321, 12311, 4435, 32454, 654654]})
a['Name'] = a['Name'].str.replace('\d+', '')
print(a)
_
出力:
_ Name Value Volume
0 May 21321 23
1 James 12311 12
2 Adi 4435 11
3 Hello 32454 34
4 Girl 654654 56
_
正規表現では、_\d
_は「任意の数字」を表し、_+
_は「1つ以上」を表します。
したがって、str.replace('\d+', '')
は、「文字列に出現するすべての数字を何も置き換えない」という意味です。
次のようにできます:
df.Name = df.Name.str.replace('\d+', '')
ここでオンライン正規表現のデモを確認してください: https://regex101.com/r/Y6gJny/2
パターン\d+
、つまり1桁以上で一致するものはすべて、空の文字列に置き換えられます。