如何在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
相关产品推荐
相关产品推荐

