Как преобразовать столбцы в шестнадцатеричные, а затем объединить, чтобы получить новый столбец с фиксированной длиной? - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть 3 числовых столбца, как указано ниже:

import pandas as pd
df = pd.DataFrame()
df['col1']=[123456, 123456, 123456 ]
df['col2']=[7, 65, 150]
df['col3']=[1, 35, 60]

Я хочу создать новый столбец, объединяющий эти три столбца после преобразования каждого из них в шестнадцатеричные числа, так что col1 преобразуется в пятизначный шестнадцатеричный код,col2 преобразуется в трехзначный шестнадцатеричный код, а col3 - в двухзначный шестнадцатеричный.Я могу преобразовать каждый из них в шестнадцатеричный код с применением лямбда-функции, однако, я не могу последовательно иметь 10 символов в новом столбце.Любое предложение?

1 Ответ

0 голосов
/ 11 сентября 2018

Использование:

#create dictionary for coolumns names with lengths
d = {'col1':5, 'col2':3, 'col3':2}
#convert to format in nested list comprehension
#https://stackoverflow.com/a/12638477
L = [["{0:0{1}x}".format(x, v) for x in df[k]] for k, v in d.items()]
print (L)
[['1e240', '1e240', '1e240'], ['007', '041', '096'], ['01', '23', '3c']]

#join strings together
df['new'] = [''.join(x) for x in zip(*L)]
print (df)
     col1  col2  col3         new
0  123456     7     1  1e24000701
1  123456    65    35  1e24004123
2  123456   150    60  1e2400963c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...