如何使用for循环在Python中创建统计汽车产地数量的新DataFrame
代码失效原因
- 你在循环中每次迭代都会创建一个仅包含当前产地列的全新DataFrame,并直接赋值给变量
x,前序迭代生成的其他产地数据会被完全覆盖,仅最后一次遍历到的Europe的结果被保留,所以最终只能看到单列数据。
用for循环实现的正确写法
你可以先初始化一个空字典存储各产地的统计结果,循环结束后再一次性转成DataFrame:
# 初始化空字典存统计结果 count_dict = {} for origin in cars['origin'].unique(): count_dict[origin] = [cars.loc[cars['origin'] == origin].shape[0]] # 转DataFrame res_df = pd.DataFrame(count_dict)
更简洁的原生实现方式
pandas内置的分组统计方法可以不用写循环直接实现需求,性能比自行遍历更高:
res_df = cars['origin'].value_counts().to_frame().T
如果需要严格保证列顺序为USA、Europe、Japan,可以再加一行调整列序:
res_df = res_df[['USA', 'Europe', 'Japan']]
内容的提问来源于stack exchange,提问作者Georgie Baul
相关产品推荐
相关产品推荐

