在我的Panda的数据框中,我有一组数据类型为string的列,我想将它们类型转换到列表中。
例如-我想将字符串“ ['C0020649', 'C0020538', 'C0020649']
”转换为列表,['C0020649', 'C0020538', 'C0020649']
以便遍历每个元素。
最初,我尝试使用进行类型转换,ast.literal_eval()
但会引发ValueError:
malformed node or string: 14 error.
这里最有趣的是,每当我尝试将数据框的列中的值保存为列表时,该列的数据类型都会自动转换为字符串类型。
提前致谢!
假设您要替换该列或使用每个单元格的列表版本添加另一列,这是我提出的一个有点笨拙但非eval()的解决方案:
def str_to_list(cell):
cell = ''.join(c for c in cell if c not in "'[]")
cell = cell.split(', ')
return cell
df = pd.DataFrame({'Column 1': ["['C0020649', 'C0020538', 'C0020649']",
"['C0050245', 'C0010689', 'C0042623']",
"['C0045734', 'C0025325', 'C0023542']"]})
df['Column 1'] = df['Column 1'].apply(str_to_list)
或者,如果您更喜欢使用lambda:
df['Column 1'] = df['Column 1'].apply(lambda cell:
''.join(c for c in cell if c not in "'[]").split(', '))
编辑:如果您正在使用字符串"'"
"["
"]"
或", "
在字符串内部,这可能会中断,但看起来好像不会,所以没关系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句