python python-3.x pandas У меня немного болит голова от этих смешанных строковых данных.У меня есть данные со смешанными буквенно-цифровыми, текстовыми, числовыми символами и длинными целыми числами в данных.
Можете ли вы помочь мне решить мою проблему?
Здесь логика заключается в том, что в этой смешанной строке, необходимо применить следующую логику,
Если ее буквенно-цифровой символ, такой как 1-HRCC, 455-HRCC, он должен выбирать из него только числовые значения (он должен ограничиваться только <= 999).если присутствуют только числа, он должен повторять одно и то же число, но только если числа <= 999.например, 45,90, 888,999, чтобы дать вывод того же числа, но если число> 999, оно должно вывести эти значения как 1. если присутствуют какие-либо пробелы, оно должно оставаться таким же, как и пустое.если какие-либо текстовые символы, такие как abc, def, ghi, pillar mill и т. д., должны выводиться как 1. Любые числа 123 678984 или буквенно-цифровые символы с пробелом (ahd 233 xyz) также должны выводиться как 1. Я определил функцию ниже, так как я все еще вНа этапе обучения не уверены, как этого добиться.
import pandas as pd
df= pd.DataFrame({'Callback':['1-HRCC','Pilar Mill',' ','abc',' ','Kar.J.Kueger@xxx.com','xyz','mc','2- HRCC','Regional','15','10','2','99-HRCC','43- HRCC','675','888','4- HRCC','31318697418','30-HRCC','25-HRCC','30-HRCC']})
def reg_clean(s):
if isinstance(s,str) and s[:0].isdigit():
return int(''.join(ele for ele in s if ele.isdigit()))
elif isinstance(s,str) and s=="":
return ""
# elif s[:1].isdigit():?
# return s
else:
return 1
df['Callback1']= df['Callback'].map(reg_clean)
Mixed_String (Input), Output
1-HRCC,1
Pilar Mill,1
abc,1
Kar.J.Kueger@xxx.com,1
xyz,1
mc,1
2-HRCC,2
Regional,1
,
15,15
10,10
2,2
99-HRCC,99
,
43-HRCC,43
675,675
888,888
4-HRCC,4
31318697418,1
30-HRCC,30
25-HRCC,25
30-HRCC,30
здесь вывод разделяется запятой (,).В настоящее время все приводит к 1.