我有一个要融化为dict
的pandas 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