преобразование столбца 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)})