如何从pandas DataFrame的对象数组中提取数值列表元素
从Pandas DataFrame单元格提取列表数据的解决方法
核心原因
你提取单元格时得到的是Series对象(而非原始列表),或形状为(1,)的object数组,本质是索引方式导致返回了容器而非单个元素。
直接提取原始列表的方法
如果目标是第n行、列名为abc的单元格:
- 用
.iloc提取单个元素:
target_list = df['abc'].iloc[n]
- 用
.loc按行索引提取:
target_list = df.loc[n, 'abc']
以上两种方式直接返回单元格内的原始列表[1,3,4,6...],无需额外处理。
针对已获取的Series对象处理
如果已经拿到了带Name和dtype的Series(比如执行了s = df['abc'].iloc[[n]]),可以通过以下方式提取列表:
# 方法1:用.item()提取单个元素 target_list = s.item() # 方法2:再次索引单个元素 target_list = s.iloc[0]
针对已获取的形状为(1,)的object数组处理
如果已经拿到了array([array([1,3,4,6...])], dtype=object)这类数组,直接索引第0位即可拿到内部的数组/列表:
# 提取内部数组 target_array = arr[0] # 转成普通列表 target_list = list(target_array)
内容的提问来源于stack exchange,提问作者Duke He
相关产品推荐
相关产品推荐

