RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1583410
Accepted
Nevskiy
Nevskiy
Asked:2024-06-10 17:00:25 +0000 UTC2024-06-10 17:00:25 +0000 UTC 2024-06-10 17:00:25 +0000 UTC

pandas:将部分字符串从十进制转换为十六进制

  • 772

我有一个表,其中有一列包含字符串数据。在每一行中,您需要将部分行从十进制转换为十六进制。

  1. 列中有行。

SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.108 = 整数:0

SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.158 = 整数:0

SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.51.118 = 整数:0

  1. 在这些行中,您需要为每行进行选择,从数字 72 开始,例如 72.87.84.67.166.75.50.108。
  2. 经过点 72 等的每个数字都需要使用 hex() 从十进制值转换为十六进制值,72 是 48,87 是 57,这将得到 48.57.54.43.a6.ac.d4 .e8

如果你在没有 pandas 的情况下执行此操作,结果如下:

import re

re_str = r'72.\d*.\d*.\d*\d*.\d*.\d*.\d*.\d*'
first_str = 'SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.172.212.232 = INTEGER: 0'
all_re_list = re.findall(re_str, first_str)
re_list_to_str = " ".join(all_re_list)
re_str_to_list2 = re_list_to_str.split('.')
re_str_to_list_int = []
for i in re_str_to_list2:
    i = int(i)
    re_str_to_list_int.append(i)

re_str_to_list_hex = []
for i in re_str_to_list_int:
    a = hex(int(i))[2:]
    re_str_to_list_hex.append(a)

print('re_str_to_list_hex', re_str_to_list_hex[:])

结果是:re_str_to_list_hex ['48', '57', '54', '43', 'a6', 'ac', 'd4', 'e8']

如何使用 Pandas 完成这一切?因为有很多表格形式的数据。

python
  • 1 1 个回答
  • 32 Views

1 个回答

  • Voted
  1. Best Answer
    Алексей Р
    2024-06-10T19:03:49Z2024-06-10T19:03:49Z

    str.replace()这里你可以通过函数使用带有替换的方法。首先,我们剪切“.72”之前的行并将它们放置在两列的中间框架中。我们str.replace()通过将点后出现的所有数字替换为其十六进制表示来处理第二列。然后我们粘合线条的两个部分。

    df = pd.DataFrame({'data': ['SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.108 = INTEGER: 0',
                                'SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.158 = INTEGER: 0',
                                'SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.51.118 = INTEGER: 0']})
    tmp = df.data.str.split('(?=\.72)', expand=True, regex=True, n=1)
    df.data = tmp[0].add(tmp[1].str.replace(r'(?<=\.)\d+', lambda x: f'{int(x[0]):x}', regex=True))
    print(df)
    

    结果:

                                                                                       data
    0  SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.48.57.54.43.a6.4b.32.6c = INTEGER: 0
    1  SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.48.57.54.43.a6.4b.32.9e = INTEGER: 0
    2  SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.48.57.54.43.a6.4b.33.76 = INTEGER: 0
    

    如果需要将转换后的数字提取到列表中,可以这样做:

    df = pd.DataFrame({'data': ['SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.108 = INTEGER: 0',
                                'SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.158 = INTEGER: 0',
                                'SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.51.118 = INTEGER: 0']})
    tmp = df.data.str.split('(?=\.72)', expand=True, regex=True, n=1)[1].str.extractall(r'(?<=\.)(\d+)').apply(lambda x: f'{int(x[0]):x}', axis=1).unstack().agg(list, axis=1)
    print(tmp)
    
    0    [48, 57, 54, 43, a6, 4b, 32, 6c]
    1    [48, 57, 54, 43, a6, 4b, 32, 9e]
    2    [48, 57, 54, 43, a6, 4b, 33, 76]
    dtype: object
    
    • 3

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5