这是我的第一篇文章。我正在为大学的工程项目编写组合算法。我正在使用Python和Pandas ..
我有一个包含多个列的Pandas数据框,其中一列是超过20k元组的列表。
每个元组的元素数量从1
到6.
不等
即:
(10),
(10,20),
(20,30,40),
(20,30,40,50),
(10,20,30,40,50),
(10,20,30,40,50,60)
我想将其转换为6
列。没有条目的空白列应归零。
我该怎么做?
...谢谢
答案 0 :(得分:0)
您可以使用列表推导来扩展元组。给定几个列表,您可以将它们一起添加。例如,[' apple'] + [' pear'] = [' apple',#39; pear']。并且[' apple'] * 2 = [' apple',' apple']。
同样的原则适用于元组,因此(10,20)+(0,)* 4 =(10,20,0,0,0,0)。因此,元组用零填充。
首先检查值是否为元组(参见第一行)。如果没有,请使用该值并将其展开为元组。
s = pd.Series([(10),
(10,20),
(20,30,40),
(20,30,40,50),
(10,20,30,40,50),
(10,20,30,40,50,60)])
>>> s
0 10
1 (10, 20)
2 (20, 30, 40)
3 (20, 30, 40, 50)
4 (10, 20, 30, 40, 50)
5 (10, 20, 30, 40, 50, 60)
dtype: object
>>> pd.DataFrame([t + (0,) * (6 - len(t)) if isinstance(t, tuple)
else (t,) + (0,) * 5
for t in s])
0 1 2 3 4 5
0 10 0 0 0 0 0
1 10 20 0 0 0 0
2 20 30 40 0 0 0
3 20 30 40 50 0 0
4 10 20 30 40 50 0
5 10 20 30 40 50 60