我创建了一个数据框“ 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
但这并没有像我预期的那样给我桌子。
答案 0 :(得分:0)
首先,我们应该使用索引将列表弄平,然后使用concat
的{{1}}方法,如下所示:
pandas
结果是:
import pandas as pd
df = 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,index
x="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)