如何从pandas DataFrame的列表类型列中提取指定元素
你现有代码logs.iloc[0:1,1].values[0]返回的是第一行bar列的完整列表[12,13,14],要获取列表内的指定元素,补充对应列表索引即可,以下是具体实现方案:
单个指定元素提取
- 按行号提取首行bar列的第一个元素:
# 直接定位到第一行bar列的列表,取索引0的元素 res = logs.iloc[0, 1][0] # 输出结果为12
- 按
foo列值为A的条件提取对应bar列第一个元素:
res = logs.loc[logs['foo'] == 'A', 'bar'].iloc[0][0] # 输出结果为12
批量处理整列列表、赋值新值
你可以用apply方法遍历整列的所有列表,自定义处理逻辑后回存到原列或者生成新列:
# 示例1:将每个列表的第一个元素加100,更新回bar列 logs['bar'] = logs['bar'].apply(lambda lst: [lst[0] + 100] + lst[1:]) # 示例2:把bar列的列表拆分为3个独立的新列,方便后续操作 logs[['bar_0', 'bar_1', 'bar_2']] = pd.DataFrame(logs['bar'].tolist(), index=logs.index)
内容的提问来源于stack exchange,提问作者TeoK
相关产品推荐
相关产品推荐

