Как взять первый символ из каждого элемента в списке и манипулировать им - PullRequest
2 голосов
/ 02 февраля 2020

Мой код следующий:

manipulate_list = data['Incorrect Frequency Cap1'].astype(str).tolist()
manipulate_list = ['Blank' if x == '' else x for x in manipulate_list]

first_numerical = []
for i in manipulate_list:
    first_numerical.append(i[0])

completed_frequency = []
for i in first_numerical:
    if i == 'N':
        completed_frequency.append(i+ 'o Cap Per Day')
    if i == 'B':
        completed_frequency.append(i+'lank')
    else:
        completed_frequency.append(i+' x Per Day') 

Когда я проверяю «first_numeric» со следующим - first_numerical[5] - я получаю «5».

Почему я получаю следующее при проверке «complete_frequency»?

completed_frequency[5] = 'N x в день'

Ответы [ 2 ]

3 голосов
/ 02 февраля 2020

IIU C, ваш список перезаписывается, когда вы пропустили elif сделать это

  for i in first_numerical:
        if i == 'N':
            completed_frequency.append(i+ 'o Cap Per Day')
        elif i == 'B':
            completed_frequency.append(i+'lank')
        else:
            completed_frequency.append(i+' x Per Day')

Давайте рассмотрим пример очистки воздуха

n=['1','1','1']
b=[]
for i in n:
    if i == '1':
        b.append(i)
    if i=='2':
        b.append(2)
    else:
        b.append('none')

Вывод

['1', 'none', '1', 'none', '1', 'none']

Правильный путь

n=['1','1','1']
b=[]
for i in n:
    if i == '1':
        b.append(i)
    elif i=='2':
        b.append(2)
    else:
        b.append('none')

Вывод

['1', '1', '1']

Не перезаписывается, но добавляется с дополнительными значениями

0 голосов
/ 02 февраля 2020

Может быть, вы можете попробовать это, функция isnumeri c возвращает True, если все символы в строке - цифры c.

 for i in first_numerical:
    if i == 'N':
        completed_frequency.append(i+ 'o Cap Per Day')
    if i == 'B':
        completed_frequency.append(i+'lank')
    if (i.isnumeric()):
        completed_frequency.append(i+' x Per Day') 
...