如何创建将元组作为单个单元格值的Pandas DataFrame?
问题描述
我编写了如下代码:
import pandas as pd dict={'name':'theName','data':('a','b','c')} df = pd.DataFrame(dict)
我期望得到如下表格:
| name | data | |
|---|---|---|
| 1 | theName | ('a','b','c') |
但实际运行后得到的却是:
| name | data | |
|---|---|---|
| 1 | theName | 'a' |
| 2 | theName | 'b' |
| 3 | theName | 'c' |
请问如何修改代码以实现期望的效果?
解决方案
问题根源是Pandas的字典解析逻辑:当字典中某个值是可迭代对象(比如你用的元组)时,Pandas会将其拆分为多行,搭配重复的标量值(这里的'theName')。要让元组作为单个单元格值保留,只需把它包装成长度为1的可迭代结构即可,以下是两种可行方案:
方案一:将元组嵌套进列表
import pandas as pd dict={'name':'theName','data':[('a','b','c')]} df = pd.DataFrame(dict)
方案二:统一用列表包裹所有值
import pandas as pd dict={'name':['theName'],'data':[('a','b','c')]} df = pd.DataFrame(dict)
执行任意一种方案后,都会得到你期望的结果。如果需要索引从1开始,可额外添加一行代码:
df.index = df.index + 1
内容的提问来源于stack exchange,提问作者Methil
相关产品推荐
相关产品推荐

