【问题标题】:Python Pandas Subset Hex String, Convert to DecimalPython Pandas 子集十六进制字符串,转换为十进制
【发布时间】:2017-07-30 18:10:12
【问题描述】:

我有一个数据框。 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]

任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas substring


    【解决方案1】:

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

    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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-20
        • 2018-01-22
        • 1970-01-01
        • 2018-01-31
        • 2012-02-03
        • 2017-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多