运行SQL查询后,我得到一个数据框,其中的一列看起来像这样:
d = {'values': ['2,3,2,2', '2,3,5', '2', '3,4,2,2,2']}
df = pd.DataFrame(data=d)
我需要做的是将每个字符串转换为数字列表:
d = {'values': [[2, 3, 2, 2], [2, 3, 5], [2], [3, 4, 2, 2, 2]]}
有pythonic的方法可以做到吗?
这是使用pd.eval
和的另一种方式explode
注释中的Jezrael帽子提示(用于评估线程)和cs95帽子提示(用于pd.Eval技巧),请阅读:
df['values_agg'] = df['values'].map(pd.eval)
print(df)
values values_agg
0 2,3,2,2 [2, 3, 2, 2]
1 2,3,5 [2, 3, 5]
2 2 [2]
3 3,4,2,2,2 [3, 4, 2, 2, 2]
或以更详细的方式避免评估。
df['values'].str.split(',').explode().astype(int).groupby(level=0).agg(list)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句