Объединить столбцы с определенными целыми числами ширины - PullRequest
0 голосов
/ 31 мая 2018

У меня есть фрейм данных 'df' с двумя целочисленными столбцами:

C1 C2
8  49
.. ..

Из этого я хочу создать новый столбец, объединяющий оба столбца с определенной шириной.C1 должен быть шириной в две цифры и шириной в три цифры C2, чтобы результирующий столбец выглядел следующим образом:

CODESUM 
08049

Первый 0 для меня менее важен.

Пока яМы пытались использовать функцию str() с str(df.C1), но безуспешно.Есть еще идеи?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Вы можете просто попробовать следующее:

df['CODESUM'] = df['C1'].astype(str).str.zfill(1) + df['C2'].astype(str).str.zfill(2)

"+" работает для конкатенации строк

0 голосов
/ 31 мая 2018

Использование понимания списка и форматированных строк (Python 3.6 +):

df['new'] = [f'{i:02d}{j:03d}' for i, j in df[['C1', 'C2']].values]

print(df)

   C1  C2    new
0   8  49  08049

F-строки часто улучшают производительность:

df = pd.concat([df]*100000)

%timeit [f'{i:02d}{j:03d}' for i, j in df[['C1', 'C2']].values]               # 458ms / loop
%timeit [str(i).zfill(2)+str(j).zfill(3) for i, j in df[['C1', 'C2']].values] # 1.03s / loop
%timeit df.C1.astype(str).str.zfill(2) + df.astype(str).C2.str.zfill(3)       # 1.02s / loop
0 голосов
/ 31 мая 2018

Использовать двойной str.zfill:

df['new'] = df.C1.astype(str).str.zfill(2) + df.astype(str).C2.str.zfill(3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...