Python добавить строки в dataframe на основе условия другого столбца - PullRequest
0 голосов
/ 02 декабря 2018

Что у меня есть:

df = pd.DataFrame(data = ["version11.11","version2.2","version3"], columns=["software_version"])


  Index software_version
    0   version11.11
    1   version2.2
    2   version3

Что я пытаюсь сделать:

Это определить тип второго последнегосимвол в столбце данных с именем software_version и создайте новый столбец в кадре данных на основе этого условия.

Если второй последний символ представляет собой цифру или алфавит, извлеките все имя без последнего буквенно-цифрового,Например, version11.11 становится version11.1 ИЛИ version3 становится version.elif, его десятичное место, затем извлекаем til до десятичного знака, version2.2 становится version2

Выходные данные должны быть:

  Index software_version  main_software
    0   version11.11     version11.1
    1   version2.2       version2
    2   version3         version

ЧтоЯ сделал так:

Как я могу аккуратно добавить столбец выше main_software?

import pandas as pd

df = pd.DataFrame(data = ["version11.11","version2.2","version3"], columns=["software_version"])

for name in df.software_version:
    if name[-2].isalnum():
        print(name[:-1])

    elif name[-2] == ".":
        print(name[:-2])

    else :
        print("!Alphanum-dot")

1 Ответ

0 голосов
/ 02 декабря 2018

Вы можете сначала определить функцию, которая вносит необходимые изменения в строку.

def GetMainSoftware(string):
    new_string=string[:-1] #first remove the last character
    if(new_string[-1]=="."): #if "." is present, remove that too
        return new_string[:-1]
    else:
        return new_string

А затем использовать apply на фрейме данных, чтобы создать новый столбец с этими особенностями.,

df["main_software"]=df.apply(lambda row: GetMainSoftware(row["software_version"]),axis=1)

df теперь будет:

  software_version main_software
0     version11.11   version11.1
1       version2.2      version2
2         version3       version
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...