You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Pandas数据框文件名列中的唯一文件扩展名数量?

获取DataFrame文件列的唯一扩展名数量

你的需求是从包含大量带扩展名文件名的DataFrame列中,统计唯一文件扩展名的数量,当前尝试的代码逻辑有误,下面是修正后的实现方法:

问题分析

你写的代码df[['filename']].loc[df['filename'].str.split().str.most_common(100)]存在两个核心问题:

  • 默认str.split()按空格分割文件名,而扩展名是通过.分隔的,分割符错误
  • str.most_common()是Counter类的方法,不能直接在Series的str属性上调用,调用逻辑不成立

正确实现方法

方法1:直接统计唯一数量

通过分割文件名提取最后一部分作为扩展名,再用nunique()统计唯一值数量:

# 提取每个文件名的扩展名(处理含多个点的情况,如file.tar.gz取gz)
extensions = df['filename'].str.split('.').str[-1]
# 计算唯一扩展名的数量
unique_extension_count = extensions.nunique()
print(unique_extension_count)

方法2:同时查看扩展名分布与数量

如果需要同时知道每个扩展名的出现次数,再统计唯一数量:

# 统计每个扩展名的出现次数
extension_counts = df['filename'].str.split('.').str[-1].value_counts()
# 唯一扩展名数量即为结果的长度
unique_ext_count = len(extension_counts)

# 打印详细分布和数量
print("各扩展名出现次数:")
print(extension_counts)
print(f"\n唯一扩展名数量:{unique_ext_count}")

处理特殊情况

如果存在无扩展名的文件(如readme)或隐藏文件(如.gitignore),可以过滤掉这类情况:

# 仅保留有明确扩展名的文件(分割后元素数>1),并提取扩展名
valid_extensions = df['filename'].str.split('.').apply(
    lambda x: x[-1] if len(x) > 1 else None
).dropna()
# 统计唯一数量
unique_valid_count = valid_extensions.nunique()
print(unique_valid_count)

内容的提问来源于stack exchange,提问作者HAAAAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:16:27