首页 > 解决方案 > 如何提取在熊猫数据框中的字符串列表中编码的二维数组?

问题描述

我搞砸了一个数据框。我有一列包含对数字列表进行编码的字符串

例如

df=
                                    mycol
0   '[ 0.5497076,   0.59722222,  0.42361111]'  
1   '[ 0.8030303,   0.69090909,  0.52727273]'  
2   '[ 0.51461988,  0.38194444,  0.66666667]'

编辑:实际上,逗号也不见了

df=
                                    mycol
0   '[ 0.5497076   0.59722222  0.42361111]'  
1   '[ 0.8030303   0.69090909  0.52727273]'  
2   '[ 0.51461988  0.38194444  0.66666667]'

每个字符串编码一个具有固定数量元素的列表。我想将其转换mycol为 3(通常为 N,其中N=len(df[mycol][0]) columns每个为数字,包含 mycol 中原始列表中的一个元素

我尝试了以下方法,但没有成功

df[mycol]=df[mycol].apply(lambda s: s.split())
df[mycol]=df[mycol].apply(lambda s: np.fromstring(s))

df[['mycol1','mycol2','mycol3']] = pd.DataFrame(df[mycol].values.tolist(), index= df.index)

标签: pythonstringlistpandasdataframe

解决方案


这应该会有所帮助。

前任:

import pandas as pd
df = pd.DataFrame({"mycol": ['[ 0.5497076   0.59722222  0.42361111]', '[ 0.8030303   0.69090909  0.52727273]']})
df[['mycol1','mycol2','mycol3']]  = df["mycol"].apply(lambda x: x.replace("[", "").replace("]", "").split()).apply(pd.Series)
print(df)

输出:

                                   mycol     mycol1      mycol2      mycol3
0  [ 0.5497076   0.59722222  0.42361111]  0.5497076  0.59722222  0.42361111
1  [ 0.8030303   0.69090909  0.52727273]  0.8030303  0.69090909  0.52727273

推荐阅读