Четырехзначный номер строки до двухзначной строки - PullRequest
0 голосов
/ 08 января 2019

Я хочу нарезать строку (которая является четырехзначным числом), но если строка начинается с 0, то я получаю только вторую букву из строки

код:

 for i in range(0,b):
     data2['CLIENTBANKTEAORMANUAL_STR2'][i]=data2['CLIENTBANKTEAORMANUAL_STR'][i][0:2]   

и результаты:

CLIENTBANKTEAORMANUAL_STR   CLIENTBANKTEAORMANUAL_STR2
    1920                         19
    0150                          1

Как я могу решить эту проблему

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Используйте индексирование с помощью str, а затем удалите 0 с левой стороны на lstrip:

df['new'] = df['CLIENTBANKTEAORMANUAL_STR'].str[:2].str.lstrip('0')
#better performance if larger data and no NaNs
#df['new_str'] = [x[:2].lstrip('0') for x in df['CLIENTBANKTEAORMANUAL_STR']]

Если нужны целые числа, но двойные 00 вернуть 0 только приведение вместо раздевания:

df['new'] = df['CLIENTBANKTEAORMANUAL_STR'].str[:2].astype(int)

Данные:

df['new_str'] = df['CLIENTBANKTEAORMANUAL_STR'].str[:2].str.lstrip('0')
df['new_int'] = df['CLIENTBANKTEAORMANUAL_STR'].str[:2].astype(int)
print (df)
  CLIENTBANKTEAORMANUAL_STR CLIENTBANKTEAORMANUAL_STR2 new_str  new_int
0                      0032                         34                0
1                      1920                         19      19       19
2                      0150                          1       1        1
0 голосов
/ 08 января 2019

Попробуйте использовать int ()

for i in range(0,b):
    data2['CLIENTBANKTEAORMANUAL_STR2'][i]=int(data2['CLIENTBANKTEAORMANUAL_STR'][i][0:2])
...