Python 将字符串列表转换为字符串中的int列表

Python 将字符串列表转换为字符串中的int列表,python,pandas,Python,Pandas,在读取CSV文件后,我有一个列,其中有一个逗号分隔的十六进制值字符串。例如“0x00000034,0x0000008a,0x00000145”。 我想将此列转换为整数列表。 我能够使用以下代码拆分并转换为整数列表: for index, row in df.iterrows(): rnti_list = [int(idx, 16) for idx in row['rnti'].split(",")] 然后我可以将其添加为一个新列 想知道最优雅的代码,它可以用最少的行数完成同样的任务 谢

在读取CSV文件后,我有一个列,其中有一个逗号分隔的十六进制值字符串。例如“0x00000034,0x0000008a,0x00000145”。 我想将此列转换为整数列表。 我能够使用以下代码拆分并转换为整数列表:

for index, row in df.iterrows():
    rnti_list = [int(idx, 16) for idx in row['rnti'].split(",")]
然后我可以将其添加为一个新列

想知道最优雅的代码,它可以用最少的行数完成同样的任务


谢谢。

使用嵌套列表理解:

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]]


使用
apply

Ex:

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
输出:

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

每个“单元格”是否具有相同的十六进制数,例如,在您的示例中为3?否。它是可变的。