如何将pandas DataFrame单列切片转换为无嵌套的一维数值列表
问题根因
你当前操作的subset实际是DataFrame类型,并非你预期的单列Series,才会出现两个异常现象:
- 调用
.values.tolist()返回嵌套列表 - 调用
.column属性抛出AttributeError(DataFrame的列属性为复数形式columns,且该属性返回的是列名列表,和你要的列值无关)
解决方法
方法1:直接压缩DataFrame为Series后转列表(最推荐)
如果确定subset只有一列,用squeeze()方法去掉多余的维度,再转列表即可得到一维结构:
subset_list = subset.squeeze().tolist()
方法2:调整取数逻辑,直接拿到Series再转列表
你可以在取数阶段就显式获取Series,避免得到单列DataFrame:
# 写法1:按列名取指定范围的行,直接得到Series subset = example['one'].iloc[0:100] # 写法2:取数时主动压缩维度 subset = example.iloc[0:100, 0].squeeze() # 转一维列表 subset_list = subset.tolist()
方法3:手动展平嵌套列表
如果不想改动前面的逻辑,也可以直接对已经得到的嵌套列表做展平处理:
subset_list = [item[0] for item in subset.values.tolist()]
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

