Как разделить значения в столбце данных на несколько столбцов - PullRequest
2 голосов
/ 07 октября 2019

Я хочу разделить значения, представленные в столбце, на другой столбец, например, с помощью скрипта Python или функции, применяемой к фрейму данных

  Number |   0|  1|  2|  3
 78797071|  78| 79| 70| 71

Я могу сделать это с помощью этого

df = df.join(pd.DataFrame(df["Number"].astype(str).str.findall("..").values.tolist()).add_prefix('DIV')).fillna("00")

но я не хочу использовать выше этого, я хочу функцию и использовать функцию apply () на фрейме данных, чтобы использовать эту функцию скрипта python, возможно ли это сделать?

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

IIUC, это то, что вам нужно (это, в основном, то, что у вас есть, но как функция, которую вы можете применить к любому фрейму данных)

def func(df):
    global df1
    f = (pd.DataFrame(df["Number"].astype(str).str.findall("..").values.tolist()).add_prefix('DIV'))
    df1=df.join(f).fillna("00")
    return df1

func(df)

Вы можете вызвать функцию на любом df

Выход

df1
     Number     0   1   2   3   DIV0    DIV1    DIV2    DIV3
0   78797071    78  79  70  71  78       79     70       71
0 голосов
/ 07 октября 2019

ага так если я вас правильно понимаю вы хотите что-то вроде этого:

from textwrap import wrap

number = 78797071

numbers = [int(n) for n in wrap(str(number), 2)]  # outputs a list [78, 79, 70, 71]
0 голосов
/ 07 октября 2019

Если столбцы всегда содержат 8 цифр, вы можете сделать:

result = df.Number.astype(str).str.extract('(\d{2})(\d{2})(\d{2})(\d{2})', expand=True)
print(result)

Вывод

    0   1   2   3
0  78  79  70  71
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...