如何将CSV值动态存入数组并按相同Price聚合更新DataFrame的PriceQ
适配场景的最优数据结构
这个场景下**字典(哈希表)**是最合适的选择,核心原因是它可以通过Price作为键实现O(1)时间复杂度的查找、插入和更新,远优于用数组遍历匹配的O(n)查找效率,尤其适合CSV数据量较大的场景。
动态更新实现逻辑
- 初始化空字典,键存储Price值,值存储对应Price的累计PriceQ
- 逐行读取CSV数据,跳过表头行后,对每行做如下处理:
- 提取当前行的
Price和PriceQ,统一转为数值类型避免匹配异常 - 判断
Price是否已存在于字典的键中:- 存在:直接将字典中对应的值加上当前行的
PriceQ - 不存在:将
Price作为新键,当前行的PriceQ作为初始值存入字典
- 存在:直接将字典中对应的值加上当前行的
- 提取当前行的
- 全量CSV读取完成后,直接将字典转为目标DataFrame即可
Python 实现示例
如果你需要严格逐行处理的场景,可以用以下逻辑实现:
import csv import pandas as pd price_q_map = {} # 逐行读取CSV with open('你的文件路径.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: price = float(row['Price']) price_q = int(row['PriceQ']) if price in price_q_map: price_q_map[price] += price_q else: price_q_map[price] = price_q # 转为目标DataFrame result_df = pd.DataFrame(price_q_map.items(), columns=['Price', 'PriceQ'])
如果没有强制逐行处理要求,全量读入后直接用pandas分组聚合即可一行得到结果:
import pandas as pd df = pd.read_csv('你的文件路径.csv') result_df = df.groupby('Price', as_index=False)['PriceQ'].sum()
内容的提问来源于stack exchange,提问作者Luis98
相关产品推荐
相关产品推荐

