преобразование столбца pandas dataframe из шестнадцатеричной строки в int

у меня очень большой фрейм данных, который я хотел бы избежать итерации через каждую строку и хочу преобразовать весь столбец из шестнадцатеричной строки в int. Он не обрабатывает строку правильно с помощью astype, но не имеет проблем с одной записью. Есть ли способ сказать astype, что тип данных является базой 16?

IN:
import pandas as pd
df = pd.DataFrame(['1C8','0C3'], columns=['Command0'])
df['Command0'].astype(int)
OUT:
ValueError: invalid literal for int() with base10: '1C8'

это работает, но хотите избежать итерации строк.

for index, row in df.iterrows():
    print(row['Command0'])

Я читаю это из CSV pd.read_csv(open_csv, nrows=20) Итак, если есть способ прочитать его и явно скажите ему, что такое формат, тогда это было бы еще лучше!

1 ответов


вы могли бы использовать apply.

df.Command0.apply(lambda x: int(x, 16))
>>>
0    456
1    195
Name: Command0, dtype: int64

и вы можете сделать это с помощью pd.read_csv звонок с помощью :

df = pd.read_csv("path.txt", converters={"Command0": lambda x: int(x, 16)})