Python Pandas Subset Hex String,转换为十进制

时间:2017-03-09 16:38:35

标签: python pandas substring

我有一个数据帧。 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 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

只是风格差异,但您可以将int()的关键字参数base直接传递给apply,而不是使用lambda。

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