如何将对象类型的列转换为 HexaDecimal

Posted

技术标签:

【中文标题】如何将对象类型的列转换为 HexaDecimal【英文标题】:Ho to convert a column of object type to HexaDecimal 【发布时间】:2021-06-15 12:07:01 【问题描述】:

假设下面的数据框有“对象”类型的列“num”

   num
0   0x11
1   0x3
2   0x05
3   0x4
4   0x1a
5   0x1d
6   0x82

“print(df.dtypes)”的输出为:

输出:

 num       object

如何将此对象类型列转换为十六进制?

预期输出:输出应该与上面提到的'df'相同。 'num' 列的类型应更改为 HEX。

我尝试了以下步骤但不起作用:

df['num'] = [str(i) for i in df['num']]
df['num'] = [int(i,16) for i in df['num']]
df['num'] = [hex(i) for i in df['num']]

【问题讨论】:

你能分享你的预期输出吗? 期望“num”列类型应更改为十六进制。其他一切都应该是一样的 列类型为十六进制??这些都是可用的列类型***.com/a/29246498/6660373我从未见过十六进制类型的列。 【参考方案1】:

literal_eval

from ast import literal_eval

df['num'] = df.num.map(literal_eval)

df

   num
0   17
1    3
2    5
3    4
4   26
5   29
6  130

【讨论】:

我喜欢这个,因为它使用地图 :)【参考方案2】:

使用df.apply:

In [391]: df['num'] = df['num'].apply(int, base=0)

In [392]: df
Out[392]: 
   num
0   17
1    3
2    5
3    4
4   26
5   29
6  130

【讨论】:

我喜欢这个。 我不知道我们也可以这样定义 +1【参考方案3】:

你可以使用apply:

df['num'] = df['num'].apply(lambda x: int(x, 16))

df:

    num
0   17
1   3
2   5
3   4
4   26
5   29
6   130

【讨论】:

以上是关于如何将对象类型的列转换为 HexaDecimal的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 405.将Number转换为Hexadecimal.cpp

c_cpp 405.将Number转换为Hexadecimal.cpp

c_cpp 405.将Number转换为Hexadecimal.cpp

c_cpp 405.将Number转换为Hexadecimal.cpp

c_cpp 405.将Number转换为Hexadecimal.cpp

c_cpp 405.将Number转换为Hexadecimal.cpp