如何从含字符串及多层元组的列表构建指定列数的Pandas DataFrame?
需求与问题
我正在处理包含字符串、字符串元组、嵌套字符串元组的混合数据,示例数据如下:
values = ['a0'] + [('b0', 'b1')] + [(('c0', 'c1'), ('c2', 'c3'))]
核心需求
基于这类数据构造DataFrame,需满足:
- 列数等于所有元素中包含的字符串总数量的最大值(上述示例中最大值为4)
- 字符串数量不足最大值的元素,空缺位置用
None填充
示例预期输出表格:
| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 0 | a0 | None | None | None |
| 1 | b0 | b1 | None | None |
| 2 | c0 | c1 | c2 | c3 |
现有问题
直接使用pd.DataFrame构造器时,结果会随列表元素的顺序变化而不符合预期:
- 执行代码:
pd.DataFrame(['a0'] + [('b0','b1')])
得到的实际输出(不符合预期):
| 0 | |
|---|---|
| 0 | a0 |
| 1 | b0 |
| 2 | b1 |
- 调换元素顺序后执行代码:
pd.DataFrame([('b0','b1')] + ['a0'])
得到的实际输出(仍不符合预期):
| 0 | 1 | |
|---|---|---|
| 0 | b0 | b1 |
| 1 | a0 | NaN |
而此场景下的预期输出应为:
| 0 | 1 | |
|---|---|---|
| 0 | a0 | None |
| 1 | b0 | b1 |
另外,元组可能存在任意深度的嵌套,例如[('d0', ('d1', ('d2', 'd3')))]这类结构也需要处理。
内容的提问来源于stack exchange,提问作者Confounded
相关产品推荐
相关产品推荐

