假设我有多个列表
A = [1, 2, 3]
B = [1, 4]
我想生成一个长格式的 Pandas DataFrame,如下所示:
type | value
------------
A | 1
A | 2
A | 3
B | 1
B | 4
实现此目标的最简单方法是什么?宽格式和融化的方式是不可能的(?),因为列表可能有不同的长度。
最佳答案
为 type
创建字典并通过列表理解创建元组列表:
A = [1, 2, 3]
B = [1, 4]
d = {'A':A,'B':B}
print ([(k, y) for k, v in d.items() for y in v])
[('A', 1), ('A', 2), ('A', 3), ('B', 1), ('B', 4)]
df = pd.DataFrame([(k, y) for k, v in d.items() for y in v], columns=['type','value'])
print (df)
type value
0 A 1
1 A 2
2 A 3
3 B 1
4 B 4
另一种解决方案,如果输入是列表的列表并且 type
应该是整数:
L = [A,B]
df = pd.DataFrame([(k, y) for k, v in enumerate(L) for y in v], columns=['type','value'])
print (df)
type value
0 0 1
1 0 2
2 0 3
3 1 1
4 1 4
关于python - 来自多个不同长度列表的 Pandas 长格式 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53651598/