将Pandas中的字符串列表转换为整数列表

3

读取CSV文件后,我有一列包含逗号分隔的十六进制值的字符串。例如:"0x00000034,0x0000008a,0x00000145"。 我想将这一列转换为整数列表。 我可以使用以下代码拆分并转换为整数列表:

for index, row in df.iterrows():
    rnti_list = [int(idx, 16) for idx in row['rnti'].split(",")]

我可以将此作为新列添加。

想要知道最优雅的代码,以尽可能少的行数完成同样的任务。

谢谢。


每个“单元格”中的十六进制数是否相同,例如您的示例中为3? - jpp
不是固定的,它是一个变量。 - Nikhil Utane
2个回答

2

使用 apply

示例:

import pandas as pd

df = pd.DataFrame({"rnti": ["0x00000034,0x0000008a,0x00000145"]})    
print( df["rnti"].str.split(",").apply(lambda x: [int(i, 16) for i in x]) )

输出:

0    [52, 138, 325]
Name: rnti, dtype: object

1
使用嵌套列表推导式:
df = pd.DataFrame({'rnti':['0x00000034,0x0000008a,0x00000145','0x00000034,0x0000008a']})
print (df)
                               rnti
0  0x00000034,0x0000008a,0x00000145
1             0x00000034,0x0000008a

rnti_list = [[int(idx, 16) for idx in x.split(",")] for x in df['rnti']]
print (rnti_list)
[[52, 138, 325], [52, 138]]

df['new'] = [[int(idx, 16) for idx in x.split(",")] for x in df['rnti']]
print (df)
                               rnti             new
0  0x00000034,0x0000008a,0x00000145  [52, 138, 325]
1             0x00000034,0x0000008a       [52, 138]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接