обработка различных строк валюты панды - PullRequest
0 голосов
/ 02 июля 2018

У меня есть несколько сотен тысяч строк данных с различными валютными формами, например:

116,319,545 SAR
40,381,846 CNY
57,712,170 CNY
158,073,425 RUB2
0 MYR
0 EUR
USD 110,169,240

Эти значения считываются в DataFrame, и я не уверен, каков наилучший способ (если есть готовый способ?), Чтобы просто получить целочисленное значение из всех возможных случаев. Вероятно, в данных больше валют.

В настоящее время лучший подход, который у меня есть:

df1['value'].str.replace(r"[a-zA-Z,]",'').astype(int)

Но это очевидно не с записью xxxx RUB2.

EDIT:

В дополнение к рабочему ответу также разумно ожидать, что валюта будет важной - чтобы извлечь это регулярное выражение ([A-Z]+\d*)

1 Ответ

0 голосов
/ 02 июля 2018

Учитывая это df

df=pd.DataFrame()
df["col"]=["116,319,545 SAR",
"40,381,846 CNY",
"57,712,170 CNY",
"158,073,425 RUB2",
"0 MYR",
"0 EUR",
"USD 110,169,240"]

Вы можете использовать регулярные выражения '(\d+)' после удаления запятых, чтобы получить

df.col.str.replace(",","").str.extract('(\d+)').astype(int)
0
0   116319545
1   40381846
2   57712170
3   158073425
4   0
5   0
6   110169240

Еще одним ручным решением было бы split и replace

df.col.str.split(' ').apply(lambda d: pd.Series(int(x.replace(",","")) for x in d if x.replace(",","").isdigit()).item())

0    116319545
1     40381846
2     57712170
3    158073425
4            0
5            0
6    110169240
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...