pandas - 熊猫将十六进制转换为负整数
问题描述
所以,我有一个 pandas 数据框,其中包含一列Hex
,我想将其转换为int
:
foo
0xff49f1
0xff49f0
以下 python 代码将对每一行执行预期结果:
bar_row_1 = 0xff49f1 - int((0xff49f1 << 1) & 0x1000000)
bar_row_1 = -46607
bar_row_2 = 0xff49f0 - int((0xff49f0 << 1) & 0x1000000)
bar_row_2 = -46608
但我想对数据框中的所有行执行此操作,并将结果输出到一个新列中,如下所示:
foo bar
0xff49f1 -46607
0xff49f0 -46608
我的尝试如下:
df['bar'] = df['foo'].apply(lambda x: (x - int((x << 1) & 0x1000000)))
但我得到这个错误:
TypeError: unsupported operand type(s) for <<: 'str' and 'int'
感谢任何帮助!
解决方案
您可以将 value 转换为int
with base 16
:
df['bar'] = df['foo'].apply(lambda x: (int(x, 16) - int((int(x, 16) << 1) & 0x1000000)))
print (df)
foo bar
0 0xff49f1 -46607
1 0xff49f0 -46608
推荐阅读
- datadog - 从日志中提取值并放置在 datadog 小部件中
- c++ - 将 void* 转换为函数指针时,std::any_cast 抛出错误的 any_cast 错误
- python - 为什么我的惩罚函数在这种情况下有效?
- google-play - 转换分析部分中谷歌播放控制台中的“其他搜索词”是什么?
- jquery - JQuery DataTables 单个列搜索
- c++ - 在 VxWorks 中发送串行数据时程序挂起
- python - 匹配参与者与纸浆优化:如何为独特的解决方案设置约束?
- amazon-web-services - 如何注册使用 WebSocket API 执行 $disconnect 路由时要发送的自定义信息?
- javascript - 使用 Javascript 编辑按钮的样式(用于填充它的 PHP 和 MySQL)
- c - array of pointers pointing to spaces allocated in calling function and write in called function