如何通过for循环遍历Pandas DataFrame,基于指定列表统计值的数量与均值
如何通过for循环遍历Pandas DataFrame,统计指定列表元素的出现次数与对应值的均值?
你需要基于给定的水果列表,用for循环来统计每个水果在DataFrame中的出现次数,以及对应value列的均值,而不是直接依赖value_counts()。先明确你的输入数据和期望目标:
输入DataFrame
Fruits value apple 10 apple 20 orange 2 grapes 5 grapes 10 grapes 3
指定统计列表
My_list = ['apple', 'orange', 'grapes']
期望输出
Fruits count average apple 2 15 orange 1 2 grapes 3 6
接下来直接上代码实现,思路很直观:先初始化一个空的结果容器,然后遍历列表里的每个水果,筛选对应行后计算数量和均值,最后把结果整理成DataFrame:
import pandas as pd # 创建你的目标DataFrame data = { 'Fruits': ['apple', 'apple', 'orange', 'grapes', 'grapes', 'grapes'], 'value': [10, 20, 2, 5, 10, 3] } df = pd.DataFrame(data) My_list = ['apple', 'orange', 'grapes'] # 初始化结果列表,用来存储每个水果的统计数据 result_data = [] for fruit in My_list: # 筛选当前水果的所有行 filtered_rows = df[df['Fruits'] == fruit] # 计算出现次数 count = len(filtered_rows) # 计算value列的均值(如果列表里有DataFrame不存在的元素,可以加判断避免报错) average = filtered_rows['value'].mean() # 将结果存入列表 result_data.append({'Fruits': fruit, 'count': count, 'average': average}) # 转换为最终的结果DataFrame result_df = pd.DataFrame(result_data) print(result_df)
运行这段代码后,就能得到和你期望完全一致的输出。如果担心列表里存在DataFrame中没有的水果,可以额外加个判断(比如if fruit in df['Fruits'].values),避免计算均值时出现空值报错。
内容的提问来源于stack exchange,提问作者user3762120
相关产品推荐
相关产品推荐

