如何将嵌套列表作为新列添加到现有的熊猫数据框

米菲

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

   Name
0. School
1. Organisation 
2. Teacher 
3. Guest

现在我有三个清单

1. A = ['','','',['12','4']]
2. B = ['','','',['3','8']]
3. status = ['','','','[['yes','no','yes'],['no','yes','no']]]
4. letter = ['', '', '', [[['K', 'L'], ['L'], ['L']], [['O'], ['P', 'O'], ['K']]]]

我想将这4个列表添加到我现有的数据框df中,它应该看起来像这样

  Name            A1    A2   status  letter
0. School                 
1. Organisation          
2. Teacher       
3. Guest          12     3   yes     K
3. Guest          12     3   yes     L
3. Guest          12     3   no      L
3. Guest          12     3   yes     L
3. Guest           4     8   no      O
3. Guest           4     8   yes     P
3. Guest           4     8   yes     O
3. Guest           4     8   no      K

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

我也尝试过这个:

dfa=pd.DataFrame({"Names":names})

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="A1"
    list_flat,list_index=flat(eval(x))
    dataframe = pd.DataFrame({x:list_flat},index=list_index)
    df = pd.concat([df['Names'],dataframe],axis=1,sort=False)

    x="A2"
    list_flat,list_index=flat(eval(x))
    dataframe = pd.DataFrame({x:list_flat},index=list_index)
    df= pd.concat([df,dataframe],axis=1,sort=False)

    x="status"
    list_flat,list_index=flat(eval(x))
    dataframe = pd.DataFrame({x:list_flat},index=list_index)
    df = pd.concat([df,dataframe],axis=1,sort=False)

    x="letter"
    list_flat,list_index=flat(eval(x))
    dataframe = pd.DataFrame({x:list_flat},index=list_index)
    df = pd.concat([df,dataframe],axis=1,sort=False)

但是嵌套列表不是出现在不同的行上,而是像这样出现在同一行上

Name              A1    A2    status                 letter
0. School                 
1. Organisation          
2. Teacher       
3. Guest          12     3   ['yes','no','yes']     [['K','L'],['L'],['L']]
3. Guest           4     8   ['no','yes','no']      [['O'],['P','O'],['K']]
杰里尔

您可以尝试以下方法:

name = ['School', 'Organization', 'Teacher', 'Guest']
A = ['','','',['12','4']]
B = ['','','',['3','8']]
status = ['','','',[['yes','no','yes'],['no','yes','no']]]
letter = [['', '', '', [[['K', 'L'], ['L'], ['L']], [['O'], ['P', 'O'], ['K']]]]]

final_list = []
for a, b, c, d, e in zip(name, A, B, status, letter[0]):
    if any([b, c, d, e]):
        for b1, c1, d1, e1 in zip(b, c, d, e):
            for d2, e2 in zip(d1, e1):
                for e3 in e2:
                    final_list.append([a, b1, c1, d2, e3])
    else:
        final_list.append([a, b, c, d, e])

df = pd.DataFrame(final_list, columns=['Name', 'A1', 'A2', 'status', 'letter'])

输出:

            Name  A1 A2 status letter
0         School                     
1   Organization                     
2        Teacher                     
3          Guest  12  3    yes      K
4          Guest  12  3    yes      L
5          Guest  12  3     no      L
6          Guest  12  3    yes      L
7          Guest   4  8     no      O
8          Guest   4  8    yes      P
9          Guest   4  8    yes      O
10         Guest   4  8     no      K

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将具有不同长度的列表作为新列添加到数据框

熊猫数据框:如何将describe()应用于每个组并添加到新列?

如何将熊猫数据添加到现有的csv文件中?

如何将列表项添加到现有的无序列表中?

numpy:如何将列添加到现有的结构化数组?

如何将现有的嵌套存储库(已在子目录中签出)添加到父Git存储库作为子模块?

如何将列表名称添加到df作为数据框的列

如何将新的对象存储添加到现有的indexeddb

如何将新的对等方添加到现有的Hyperledger Fabric网络中?

将NP数组添加到现有的熊猫数据框

如何将列表作为新行添加到熊猫数据框

熊猫:根据现有数据,将一列添加到数据框,作为链接操作

如何将特定属性作为新行添加到列表中的各个数据框

如何将列添加到现有的填充数据框中

需要使用列将新的DateTime列添加到现有数据框

如何将新的whosonfirst位置添加到现有的pelias数据库?

如何将新节点添加到现有的Corda网络?

在Pyspark中,如何将值列表作为新列添加到现有数据框?

如何将列表添加到现有的json文件?

根据现有列与pyspark的交互将新列添加到数据框

将列表的列表作为列添加到python中的现有数据框

如何将列表中的元素添加到数据框作为保留顺序的列?

如何将列添加到列表中的所有数据框

如何将NullableBooleanField添加到现有的Django数据库中?

如何将新类添加到现有的edmx文件

将列表添加到现有的嵌套列表

如何将新字段/列添加到现有的 xBase 文件/表

如何将列与数据一起添加到现有的 SQL Server 表

将新列添加到现有的考拉数据框会导致 NaN