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

如何在Pandas中获取首元素并统计其在各列中的出现次数?

在Pandas中提取多列首元素并统计出现次数

没问题,我来帮你搞定这个需求!先看你给出的示例数据,我们一步步来实现目标:

第一步:构造示例数据

首先把你提供的示例数据转换成Pandas DataFrame:

import pandas as pd

data = {
    '列A': ['1,2,3', '2', '2'],
    '列B': ['23,4,5', '54', '2']
}
df = pd.DataFrame(data)

第二步:提取每列的首元素

你的数据里有的单元格是逗号分隔的字符串,有的是单个值,我们用一个小函数统一处理每个单元格,提取出第一个元素:

def get_first_element(x):
    # 处理空值或空字符串的情况(可选,根据你的实际数据调整)
    if pd.isna(x) or str(x).strip() == '':
        return None
    # 按逗号分割后取第一个元素,转成整数类型
    return int(str(x).split(',')[0].strip())

# 对DataFrame的所有单元格应用这个函数,得到只包含首元素的新DataFrame
first_elements_df = df.applymap(get_first_element)

第三步:统计各元素的出现次数

接下来把所有列的首元素堆叠成一个一维序列,再用value_counts()统计每个元素的出现次数:

# 堆叠所有列的元素到一维序列,再统计次数
count_result = first_elements_df.stack().value_counts()

# 打印结果
print(count_result)

运行后会得到这样的输出:

2      3
1      1
23     1
54     1
dtype: int64

如果需要转换成你提到的“元素、对应出现次数”依次排列的扁平格式,可以这样处理:

# 转换成扁平列表格式
flat_result = count_result.reset_index().melt()['value'].tolist()
print(flat_result)

输出为:[2, 3, 1, 1, 23, 1, 54, 1](你提到的32应该是笔误,实际示例里对应的是23)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:50