Регулярное выражение Pandas [дубликат]

В Swift 2.2 вам может понадобиться передать ваш массив NSArray для использования компонентовJoinedByString (",")

let stringWithCommas = (yourArray as NSArray).componentsJoinedByString(",")
35
задан KillerSnail 23 March 2014 в 09:48
поделиться

4 ответа

Вы можете удалить все ненулевые цифры, используя re.sub():

value = re.sub(r"[^0-9]+", "", value)

regex101 demo

10
ответ дан Jerry 22 August 2018 в 10:36
поделиться
  • 1
    \D+ будет наименьшим: -P – Sabuj Hassan 23 March 2014 в 09:56
  • 2
    Каков наилучший способ применить его к столбцу в DataFrame? поэтому у меня есть df ['pricing'] я просто цикл за строкой? – KillerSnail 23 March 2014 в 09:57
  • 3
    @KillerSnail У меня нет большого опыта работы с пандами, но я думаю, что вы должны использовать его так: df['pricing'] = re.sub(r"[^0-9]+", "", df['pricing']). – Jerry 23 March 2014 в 10:14
  • 4
    ОК, я думаю, что я получил его для использования панд: df ['Pricing']. replace (to_replace = '[^ 0-9] +', value = '', inplace == True, regex = True). Используется метод .replace re.sub – KillerSnail 23 March 2014 в 10:55
  • 5
    осторожность - удаление всех символов без цифр приведет к удалению десятичной точки отрицательного знака и объединению несвязанных чисел, например. «$ 8,99, но $ 2 с купоном». становится "8992", "5,99 долл. США" становится "499", "5 долл. США" становится «5». – ChuckCottrill 26 April 2017 в 17:52

Для этого вам не нужно регулярное выражение. Это должно работать:

df['col'] = df['col'].astype(str).convert_objects(convert_numeric=True)

5
ответ дан samthebrand 22 August 2018 в 10:36
поделиться

Вы можете использовать Series.str.replace :

import pandas as pd

df = pd.DataFrame(['$40,000*','$40000 conditions attached'], columns=['P'])
print(df)
#                             P
# 0                    $40,000*
# 1  $40000 conditions attached

df['P'] = df['P'].str.replace(r'\D+', '').astype('int')
print(df)

дает

       P
0  40000
1  40000

, поскольку \D соответствует любому не десятичному значению значный .

70
ответ дан unutbu 22 August 2018 в 10:36
поделиться

Вы можете использовать метод замены pandas; также вы можете захотеть сохранить разделитель тысяч ',' и разделитель десятичных знаков '.'

import pandas as pd

df = pd.DataFrame(['$40,000.32*','$40000 conditions attached'], columns=['pricing'])
df['pricing'].replace(to_replace="\$([0-9,\.]+).*", value=r"\1", regex=True, inplace=True)
print(df)
pricing
0  40,000.32
1      40000
11
ответ дан user2226924 22 August 2018 в 10:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: