Reputation: 215
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
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