在Pandas数据框中转换列表以创建新的数据框列

时间:2019-07-20 09:23:28

标签: python pandas dataframe dictionary

我有一本字典,其中包含唯一ID值的“列表”。我需要将这些值转换为包含每个ID的预测值的列。

这是我的字典:

myDict = {'1616':   pred
0  6142
1  6145
2  6154, '1938':         pred
0  48637
1  42053
2  30977, '2371':         pred
0  0.26
1  1.39
2  0.78
...}

首次加载后:

id     pred
1616   [[6142]\n [6145 ]\n [6154]]
1938   [[48637 ]\n [42053 ]\n [30977]]
2371   [[0.26]\n [1.39 ]\n [0.78]]

我尝试在删除“ \ n”时将列表转换为数据框列。

df = pd.DataFrame(myDict['pred'].str.split('\n').values.tolist())

结果如下:

      0          1          2
0  [[6142]    [6145 ]    [6154]]
1  [[48637 ]  [42053 ]   [30977]]
2  [[0.26]    [1.39 ]    [0.78]]

我也尝试过:

df = pd.DataFrame(myDict.pred.str.split('\n'), index= myDict.index)

但是结果看起来像这样:

      pred
0     [[[6142 ], [6145 ], [6154]]]
1     [[[48637 ], [42053 ], [30977]]]
2     [[[0.26 ], [1.39 ], [0.78]]]

由于我对Python还是很陌生,因此我正在为下一步工作而苦苦挣扎,以达到我期望的结果之一。

我的目标是拥有以下条件:

id    0        1        2
1616  6142     6145     6154
1938  48637    42053    30977
2371  0.26     1.39     0.78

或:

    1616        1938        2371
0    6142       48637       0.26
1    6145       42053       1.39
2    6154       30977       0.78

非常感谢您提供任何提示!

1 个答案:

答案 0 :(得分:0)

您的字典应包含值列表。为此,您的字典应设置为以下格式:

my_dict = {‘1616’: [‘6142, 6145, 6154], 
                  ‘1938’: [48637, 42053]}

由于[...]构成列表