Python 熊猫融化在不同大小的名单中?
我有一个dict,我想融入熊猫数据帧 当所有列表长度相等时,此方法有效,我得到了所需的输出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(
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