如何在Pandas中新增列统计list_A首个元素的非空数量
解决方法:统计DataFrame嵌套字典中list_A首元素的非空数量
现有DataFrame df仅含一列column_dic,该列的每个元素是一个字典列表,每个字典包含list_A和list_B两个键,对应的值均为列表。数据构造代码如下:
import pandas as pd data = [{"list_A": [2.93, 4.18, 4.18, None, 1.57, 1.57, 3.92, 6.27, 2.09, 3.14, 0.42, 2.09], "list_B": [820, 3552, 7936, None, 2514, 4035, 6441, 15379, 2167, 6147, 3322, 1177]}, {"list_A": [2.51, 3.58, 3.58, None, 1.34, 1.34, 3.36, 5.37, 1.79, 2.69, 0.36, 1.79], "list_B": [820, 3552, 7936, None, 2514, 4035, 6441, 15379, 2167, 6147, 3322, 1177]}, {"list_A": [None, 5.94, 5.94, None, 2.23, 2.23, 5.57, 8.9, 2.97, 4.45, 0.59, 2.97], "list_B": [820, 3552, 7936, None, 2514, 4035, 6441, 15379, 2167, 6147, 3322, 1177]}] # 创建含column_dic列的DataFrame df = pd.DataFrame({"column_dic": [data]})
需求:为df新增count_first_item列,统计column_dic中每个字典的list_A首元素(索引0位置)的非空值数量,预期结果为2(仅2.93、2.51为非空,None不计入)。
实现代码
通过apply方法遍历column_dic中的字典列表,提取每个list_A的首元素并统计非空值数量:
def count_nonempty_first_items(dic_list): # 过滤首元素非空的项并统计数量 return sum(1 for dic in dic_list if dic['list_A'][0] is not None) # 新增目标列 df['count_first_item'] = df['column_dic'].apply(count_nonempty_first_items)
结果验证
执行代码后,df['count_first_item']的值为2,完全符合预期。
内容的提问来源于stack exchange,提问作者Foeke Boersma
相关产品推荐
相关产品推荐

