Christie Chen
Christie Chen

Reputation: 215

pandas dataframe.apply -- converting hex string to int number

I am very new to both python and pandas. I would like to know how to convert dataframe elements from hex string input to integer number, also I have followed the solution provided by: convert pandas dataframe column from hex string to int

However, it is still not working. The following is my code:

df = pd.read_csv(filename, delim_whitespace = True, header = None, usecols = range(7,23,2))
for i in range(num_frame):
    skipheader = lineNum[header_padding + i*2]
    data = df.iloc[skipheader:skipheader + 164:2]
    data_numeric = data.apply(lambda x: int(x, 16))
    dataframe.append(data)

the data variable looks like: data variable (type:DataFrame) also the console output in spyder:enter image description here

the error happens at data_numeric = data.apply(lambda x: int(x, 16)) and the error message is

TypeError: ("int() can't convert non-string with explicit base", u'occurred at index 7')

I had also trydata_numeric = data.apply(pd.to_numeric, errors='coerce') but all the hex number turn into NaN, which is not I want. Any suggestions? Thanks a lot in advance!!!

Upvotes: 1

Views: 6224

Answers (1)

MaxU - stand with Ukraine
MaxU - stand with Ukraine

Reputation: 210912

assume we have the following DF:

In [62]: df
Out[62]:
     a   b    c
0  1C8  21  15F
1  0C3  B7  FFC

we can do this:

In [64]: df = df.apply(lambda x: x.astype(str).map(lambda x: int(x, base=16)))

In [65]: df
Out[65]:
     a    b     c
0  456   33   351
1  195  183  4092

In [66]: df.dtypes
Out[66]:
a    int64
b    int64
c    int64
dtype: object

PS x.astype(str) is done for security reasons - in case if some of your columns are already of numeric dtype

Upvotes: 8

Related Questions