您的位置:首页 >Pandas统计字典列列表首元素非空数
发布于2025-08-28 阅读(0)
扫一扫,手机访问

本文介绍了如何使用 Pandas 统计 DataFrame 中字典列里,嵌套列表(特别是'list_A')的首个元素(索引为0)的非缺失值(非Null值)的个数。通过示例代码,详细展示了两种实现方法,帮助读者理解并掌握在 Pandas 中处理复杂数据结构的技巧。
此方法利用列表推导式提取每个字典中 'list_A' 的第一个元素,然后使用 pd.notna() 函数判断是否为非缺失值,最后使用 sum() 函数统计 True 的个数。
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]}]
# Create a DataFrame with a column named "column_dic"
df = pd.DataFrame({"column_dic": [data]})
df['count_first_item'] = [pd.notna([y['list_A'][0] for y in x]).sum()
for x in df['column_dic']]
print(df)代码解释:
此方法首先使用 Series.explode() 将字典列表展开为单独的行,然后使用 Series.str.get() 获取 'list_A' 列表,再使用 str[0] 获取第一个元素,最后使用 DataFrameGroupBy.count() 统计每个分组(原始 DataFrame 的每一行)中非缺失值的个数。
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]}]
# Create a DataFrame with a column named "column_dic"
df = pd.DataFrame({"column_dic": [data]})
df['count_first_item'] = (df['column_dic'].explode().str.get('list_A').str[0]
.groupby(level=0).count())
print(df)代码解释:
这两种方法都能够有效地统计 DataFrame 字典列中列表首个元素的非缺失值个数。 第一种方法使用列表推导式,代码简洁易懂,但当数据量较大时,性能可能稍逊。 第二种方法使用 Series.explode() 和 DataFrameGroupBy.count(),代码略微复杂,但通常在处理大数据集时效率更高。 选择哪种方法取决于具体的数据规模和性能需求。
上一篇:AE 2019新建项目详细教程
下一篇:MX播放器关闭广告方法大全
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9