Python Pandas子集十六进制字符串,转换为十进制

3

我有一个数据框。列B包含4个字符的十六进制值:

dict = {'A': ['foo', 'bar', 'baz'], 'B': ['1346', '0f46', '5a46']}
df = pd.DataFrame(dict)

我只对B列中十六进制的前两个字符感兴趣。我想用十六进制的前两个字符替换B列,并将它们转换为十进制数。因此,最终结果应该是一个如下所示的数据框:
A    B
foo  19
bar  15
baz  90

我甚至不知道如何获取前两个字符的子集。这似乎应该有效,但实际上并不是这样:
df.B.str[:2]

任何帮助将不胜感激。
2个回答

3

只是一种风格上的不同,但是你也可以直接将关键字参数base传递给apply,而不是使用lambda函数来对int()进行操作。

df['B'] = df['B'].str[:2].apply(int, base=16)

2
您可以使用 str[:2] 对列进行切片,然后调用 apply 方法,并使用 lambda 表达式将十六进制转换为十进制:
In [255]:    
df['B'] = df['B'].str[:2].apply(lambda x: int(x,16))
df

Out[255]:
     A   B
0  foo  19
1  bar  15
2  baz  90

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接