正規表現 (DataFrame.str.extract()
)などを使って、数値を切り出して再計算すると良いかと思います。
Python
1import pandas as pd
2
3df = pd.DataFrame([
4 ['武','3000万円', '19年'],
5 ['隆','1億円', '18年'],
6 ['良太郎','200万円', '20年'],
7 ['弘','20億円', '18年'],
8 ['花子','1億2000万円', '19年'],
9 ['将兵','9000万1000円', '16年'],
10], columns=['名前','年収','年'])
11
12tmp = df['年収'].str.extract(r'(?:(?P<億>\d+)億)?(?:(?P<万>\d+)万)?(?P<円>\d+)?円').fillna(0).astype(int)
13df['年収'] = tmp['億'] * 100000000 + tmp['万'] * 10000 + tmp['円']
14print(df)
15# 名前 年収 年
16#0 武 30000000 19年
17#1 隆 100000000 18年
18#2 良太郎 2000000 20年
19#3 弘 2000000000 18年
20#4 花子 120000000 19年
21#5 将兵 90001000 16年
【追記】
"年"列の変換も追加したサンプル
import pandas as pd
df = pd.DataFrame([
['武','3000万円', '19年'],
['隆','1億円', '18年'],
['良太郎','200万円', '20年'],
['弘','20億円', '18年'],
['花子','1億2000万円', '19年'],
['将兵','9000万1000円', '16年'],
], columns=['名前','年収','年'])
tmp = df['年収'].str.extract(r'(?:(?P<億>\d+)億)?(?:(?P<万>\d+)万)?(?P<円>\d+)?円').fillna(0).astype(int)
df['年収'] = tmp['億'] * 100000000 + tmp['万'] * 10000 + tmp['円']
df['年'] = df['年'].str.extract(r'(\d+)年').astype(int) * 100
print(df)
# 名前 年収 年
#0 武 30000000 1900
#1 隆 100000000 1800
#2 良太郎 2000000 2000
#3 弘 2000000000 1800
#4 花子 120000000 1900
#5 将兵 90001000 1600