Python: извлечь определенную строку из начала другой строки - PullRequest
0 голосов
/ 04 мая 2020

текущий код:

    #defining what unwanted values can be in col instead of a date
    missing_date_values = ("None", "nan", "-inf", "NA", "Nan")

    for i, row in enumerate(data["col"]):
    #in case cell´s value starts with one of the tuple´s string values -> get 
    #length of that string and extract it into date column
    if row.startswith(missing_date_values):
        #LOOKING FOR THE CODE HERE

Я создал кортеж missing_date_values, и теперь я перебираю столбец col некоторого фрейма данных. Всякий раз, когда значение ячейки начинается с одной из строк кортежа, я хочу извлечь именно строку этого кортежа из значения ячейки. Поэтому мне нужен код, который знает, с какого из строковых значений кортежа начинается ячейка. Мне не разрешено использовать какие-либо пакеты.

Мне уже удалось написать код, решающий эту проблему, но он выглядит излишне длинным.

предыдущий код:

    index = 0
    for value in data["col"]:
        if value.startswith("NA"):
            data["date"][index] = data["col"][index][:2]
            data["col"][index] = data["col"][index][2:]

        elif value.startswith("-inf"):
            data["date"][index] = data["col"][index][:4]
            data["col"][index] = data["col"][index][4:]

        elif value.startswith("NaN"):
            data["date"][index] = data["col"][index][:3]
            data["col"][index] = data["col"][index][3:]

        elif value.startswith("nan"):
            data["date"][index] = data["col"][index][:3]
            data["col"][index] = data["col"][index][3:]

        index += 1

Спасибо за вашу помощь <3 </p>

PS .: Новое для сообщества

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Это, вероятно, самое короткое, что вы получите:

missing_date_values = ("None", "nan", "-inf", "NA", "Nan")

for index, value in enumerate(data["col"]):
    for v in missing_date_values:
        if value.startswith(v):
            data["date"][index] = data["col"][index][:len(v)]
            data["col"][index] = data["col"][index][len(v):]
0 голосов
/ 04 мая 2020
index = 0
for value in data["col"]:
  beg = [s for s in ("None", "nan", "-inf", "NA", "Nan") if value.startswith(s)]
  if beg:
    beg = beg[0]
    data["date"][index] = data["col"][index][:len(beg)]
    data["col"][index] = data["col"][index][len(beg):]

  index += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...