如何将元组列表转换为单列的Pandas DataFrame?
问题
我有一个元组列表:
tuple_lst = [('foo', 'bar'), ('bar', 'foo'), ('ping', 'pong'), ('pong', 'ping')]
希望创建一个仅含一列的DataFrame,该列包含每个元组对,格式如下:
| one col | | -------- | | ('foo', 'bar') | | ('bar', 'foo') | | ('ping', 'pong') | | ('pong', 'ping') |
我尝试执行:
df = pd.DataFrame(tuple_lst, columns='one col')
但出现错误,因为Pandas会将元组拆分为两列。我知道传入两个列名会生成双列DataFrame,但这不是我想要的。我不想先拆分再合并元组,希望有更简便的方法,且结果必须是DataFrame而非Series,以便后续添加其他列。
解决方案
方法1:包装为二维列表
把原元组列表的每个元素单独作为列表的一项,让Pandas识别为单列数据:
import pandas as pd tuple_lst = [('foo', 'bar'), ('bar', 'foo'), ('ping', 'pong'), ('pong', 'ping')] df = pd.DataFrame([item for item in tuple_lst], columns=['one col'])
执行后每个元组会完整保留在one col列中,不会被拆分。
方法2:通过Series转DataFrame
先创建Series,再用to_frame()方法转为DataFrame并指定列名:
s = pd.Series(tuple_lst, name='one col') df = s.to_frame()
这种方式代码简洁,生成的DataFrame可直接用于后续添加新列。
方法3:强制指定数据类型
使用from_records方法时,通过dtype=object强制Pandas将元组视为单个对象,避免自动拆分:
df = pd.DataFrame.from_records(tuple_lst, columns=['one col'], dtype=object)
内容的提问来源于stack exchange,提问作者Emi OB
相关产品推荐
相关产品推荐

