我有一个要融化为dictpandas DataFrame

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


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

pd.DataFrame(d).melt()


出:

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


但是,当列表长度不相等时,这将失败,例如:

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


我该如何解决这个问题?

最佳答案

您可以使用Dataframe.from_dict使用orient方法。 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

09-15 17:27