如何统计DataFrame中B列各数值出现次数并生成对应列表?
从Pandas DataFrame提取唯一值及对应出现次数
示例DataFrame
假设我们有如下Pandas DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'B': [1401, 1401, 1401, 1601, 2201, 2201, 6401, 6401, 6401, 6401] })
需求
需要生成两个列表:
L1:B列的所有唯一值,保持其在原DataFrame中首次出现的顺序L2:对应L1中每个值在B列的出现次数
期望输出:
L1 = [1401, 1601, 2201, 6401] L2 = [3, 1, 2, 4]
实现方法
方法1:使用value_counts()(推荐)
利用Pandas的value_counts()方法统计次数,通过sort=False参数保留原顺序:
# 统计B列值的出现次数,保留原顺序 count_series = df['B'].value_counts(sort=False) # 转换为目标列表 L1 = count_series.index.tolist() L2 = count_series.values.tolist() # 输出结果 print(f"L1 = {L1}") print(f"L2 = {L2}")
方法2:使用groupby()
通过分组统计的方式实现:
# 按B列分组并统计每组大小,保留原顺序 grouped_series = df.groupby('B', sort=False).size() # 转换为目标列表 L1 = grouped_series.index.tolist() L2 = grouped_series.values.tolist()
两种方法都能得到符合需求的结果,value_counts()更简洁直接,适合这类场景。
内容的提问来源于stack exchange,提问作者AdrixnIPP
相关产品推荐
相关产品推荐

