Python 熊猫融化在不同大小的名单中?

Python 熊猫融化在不同大小的名单中?,python,pandas,Python,Pandas,我有一个dict,我想融入熊猫数据帧 当所有列表长度相等时,此方法有效,我得到了所需的输出 pd.DataFrame(d).melt() 输出: 但是,当列表长度不相等时,此操作失败,例如: d = {'a':['1','2','3','4'], 'b':['cat','dog','bird'], 'c':['75','23','49']} 如何解决这个问题?您可以从每个列构建一个数据帧,对其进行压缩,然后融化较大的数据帧并删除na pd.concat( [pd.DataFrame(

我有一个dict,我想融入熊猫数据帧

当所有列表长度相等时,此方法有效,我得到了所需的输出

pd.DataFrame(d).melt()
输出:

但是,当列表长度不相等时,此操作失败,例如:

d = {'a':['1','2','3','4'], 'b':['cat','dog','bird'], 'c':['75','23','49']}

如何解决这个问题?

您可以从每个列构建一个数据帧,对其进行压缩,然后融化较大的数据帧并删除na

pd.concat(
    [pd.DataFrame(dict((tup,))) for tup in d.items()], 
    axis=1, 
    ignore_index=True
).melt().dropna()

    variable value
0          0     1
1          0     2
2          0     3
3          0     4
4          1   cat
5          1   dog
6          1  bird
8          2    75
9          2    23
10         2    49

您可以从每个列构建一个数据帧,对它们进行连接,然后融化较大的数据帧并删除na

pd.concat(
    [pd.DataFrame(dict((tup,))) for tup in d.items()], 
    axis=1, 
    ignore_index=True
).melt().dropna()

    variable value
0          0     1
1          0     2
2          0     3
3          0     4
4          1   cat
5          1   dog
6          1  bird
8          2    75
9          2    23
10         2    49
可以使用“定向”方法。Orient允许将键用作数据帧中的行。因此,在创建数据帧之后,您可以进行简单的转置,以获得所需的格式。然后把na放在数据帧中,得到最终的数据帧

作为pd进口熊猫 将numpy作为np导入

d = {'a': ['1', '2', '3', '4'], 'b': ['cat', 'dog', 'bird'], 'c': ['75', '23', '49']}

e = pd.DataFrame.from_dict(d,orient='index')
e = e.T
e = e.melt()
e = e.dropna()
print(e)
输出

可以使用“定向”方法。Orient允许将键用作数据帧中的行。因此,在创建数据帧之后,您可以进行简单的转置,以获得所需的格式。然后把na放在数据帧中,得到最终的数据帧

作为pd进口熊猫 将numpy作为np导入

d = {'a': ['1', '2', '3', '4'], 'b': ['cat', 'dog', 'bird'], 'c': ['75', '23', '49']}

e = pd.DataFrame.from_dict(d,orient='index')
e = e.T
e = e.melt()
e = e.dropna()
print(e)
输出

       variable value
0         a     1
1         a     2
2         a     3
3         a     4
4         b   cat
5         b   dog
6         b  bird
8         c    75
9         c    23
10        c    49