Преобразование списка строк в список int в пандах - PullRequest
0 голосов
/ 17 октября 2018

после чтения файла CSV у меня есть столбец, в котором есть строка шестнадцатеричных значений, разделенных запятыми.Например, «0x00000034,0x0000008a, 0x00000145».Я хочу преобразовать этот столбец в список целых чисел.Я могу разделить и преобразовать в список целых чисел, используя следующий код:

for index, row in df.iterrows():
    rnti_list = [int(idx, 16) for idx in row['rnti'].split(",")]

Затем я могу добавить это как новый столбец.

Хотел бы узнать самый элегантный код, который будетсделать то же самое с минимальным количеством строк.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

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

Пример:

import pandas as pd

df = pd.DataFrame({"rnti": ["0x00000034,0x0000008a,0x00000145"]})    
print( df["rnti"].str.split(",").apply(lambda x: [int(i, 16) for i in x]) )

Выход:

0    [52, 138, 325]
Name: rnti, dtype: object
0 голосов
/ 17 октября 2018

Использовать понимание вложенного списка:

df = pd.DataFrame({'rnti':['0x00000034,0x0000008a,0x00000145','0x00000034,0x0000008a']})
print (df)
                               rnti
0  0x00000034,0x0000008a,0x00000145
1             0x00000034,0x0000008a

rnti_list = [[int(idx, 16) for idx in x.split(",")] for x in df['rnti']]
print (rnti_list)
[[52, 138, 325], [52, 138]]

df['new'] = [[int(idx, 16) for idx in x.split(",")] for x in df['rnti']]
print (df)
                               rnti             new
0  0x00000034,0x0000008a,0x00000145  [52, 138, 325]
1             0x00000034,0x0000008a       [52, 138]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...