pandas 从一列中的元组值创建新列

pandas create new columns from tuple values in one column

我的数据框看起来像

    RMSE    SELECTED DATA   information
0   100 [12, 15, 19, 13]    (arr1, str1, fl1)
1   200 [7, 12, 3]          (arr2, str2, fl2)
2   300 [5, 9, 3, 3, 3, 3]  (arr3, str3, fl3)

在这里,我想将 information 列分成三个不同的列:第一列包含数组,第二列包含字符串,最后一列包含浮点数因此新数据框看起来喜欢

    RMSE    SELECTED DATA   ARRAYS  STRING  FLOAT
0   100 [12, 15, 19, 13]    arr1    str1    fl1
1   200 [7, 12, 3]          arr2    str2    fl2
2   300 [5, 9, 3, 3, 3, 3]  arr3    str3    fl3

我认为一种方法是隔离 information 列,然后使用 .apply 对其进行切片,如下所示:

df['arrays'] = df['information'].apply(lambda row : row[0])

并对每个条目执行此操作。但我很好奇是否有更好的方法来做到这一点,因为如果有更多的条目,它可能会变得乏味或使用 for 循环变慢

让我们重新创建数据框

tojoin = pd.DataFrame(df.pop('information').to_numpy().tolist(), 
                      index = df.index, 
                      columns = ['ARRAYS', 'STRING', 'FLOAT'])
df = df.join(tojoin)