如何在多个熊猫列中将十六进制转换为int

问题描述 投票:0回答:1

我正在尝试将具有十六进制值的熊猫表转换为十进制。我目前正在同时使用以下内容一次处理此专栏:

df["a"] = df["a"].apply(int,base=16)
df["b"] = df["b"].apply(int,base=16)
df["c"] = df["c"].apply(int,base=16)
df["d"] = df["d"].apply(int,base=16)

是否一劳永逸地做到这一点?类似于:

df[['a','b','c','d']] = df[['a','b','c','d']].apply(int,base=16,axis=1)

我尝试过:

df[['a','b','c','d']] = df[['a','b','c','d']].apply(lambda x: int(x,base=16),axis=1)

但是这不能正常工作。

样本数据:

      A                    B        C
0  0x26  0x526aada8ffd9e0000  0x15f90
1  0x26                  0x0  0x222e0
2  0x25                  0x0  0x222e0
python pandas hex
1个回答
0
投票

所以这是一个示例数据框:

>>> df
      A                    B        C
0  0x26  0x526aada8ffd9e0000  0x15f90
1  0x26                  0x0  0x222e0
2  0x25                  0x0  0x222e0

现在,您只需要applymap

>>> hex_to_int = lambda x: int(x, 16)
>>> df[['A', 'B', 'C']] = df[['A', 'B', 'C']].applymap(hex_to_int)

结果如预期:

>>> df
    A                     B       C
0  38  95020000000000000000   90000
1  38                     0  140000
2  37                     0  140000
© www.soinside.com 2019 - 2024. All rights reserved.