如何将列表列表作为列添加到现有数据框中

我创建了一个数据框“df”,如下所示:


   Name

0. School

1. Organisation 

2. Teacher 

3. Guest

现在我有三个清单


1. from=['12','18',['11','10'],['12','4','8']]

2. to = [['11','9'],'','8','3']

3. status = ['yes','no',['yes','no'],'']

我想将这 3 个列表添加到我现有的数据框 df 中,它应该如下所示


  Name          From   To   Status

0. School        12    11   Yes

0. School               9

1. Organisation  18         No

2. Teacher       11     8   Yes

2. Teacher       10         No

3. Guest         12     3

3. Guest          4

3. Guest          8

我试过了df['from']=from,df['to']=to 但这并没有像我预期的那样给我桌子。


尚方宝剑之说
浏览 312回答 1
1回答

智慧大石

首先,我们应该用索引压平列表,然后使用这样的concat方法pandas:import pandas as pddf = pd.DataFrame({"Name":["School","Organisation","Teacher","Guest"]})From = ['12','18',['11','10'],['12','4','8']]def flat(nums):    res = []    index = []    for i in range(len(nums)):        if isinstance(nums[i], list):            res.extend(nums[i])            index.extend([i]*len(nums[i]))        else:            res.append(nums[i])            index.append(i)    return res,indexx="From"list_flat,list_index=flat(eval(x))dataframe = pd.DataFrame({x:list_flat},index=list_index)df = pd.concat([df['Name'],dataframe],axis=1,sort=False)结果是:           Name From0        School   121  Organisation   182       Teacher   112       Teacher   103         Guest   123         Guest    43         Guest    8
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python