python - 根据参数按字段值对 CSV 文件中的数据进行分组
问题描述
我有一个 csv 文件被缩短,我想按下面的代码含义对列进行分组:
Sector,Ticker,Date,Open,High,Low,Close,Volume,OpenInt
Technology,ibm,1/2/62,6.413,6.413,6.3378,6.3378,467056,0
Technology,ibm,1/3/62,6.3378,6.3963,6.3378,6.3963,350294,0
Technology,apk,1/4/62,6.3963,6.3963,6.3295,6.3295,314365,0
Technology,ibm,1/5/62,6.3211,6.3211,6.1958,6.2041,440112,0
Technology,apk,1/8/62,6.2041,6.2041,6.0373,6.087,655676,0
输入命令行后输出的这个 - 以格式输出:
python OLAP.py --input input.csv --groupby ticker
ticker,Open, High, Low, Close, Volume,
ibm, 6.413, 6.413,6.3378,6.3378,467056
6.3378,6.3963,6.3378,6.3963,350294
apk, 6.3963,6.3963,6.3295,6.3295,314365
6.2041,6.2041,6.0373,6.087,655676
出于家庭作业的目的,我们不允许使用除 CSV、OS、sys、argparse 之外的任何其他导入我一直在按字段值查看 CSV 文件中的此组数据,以获得对其的一些洞察和理解,并尝试了一个实现:
def main():
format_dict = {}
args = parse_args()
with open(args.filename, "r") as open_file:
readers = csv.DictReader(open_file, delimiter = ',')
if args.group_by is not None:
for row in readers:
for index in range(len(row)):
if args.group_by == row[index]:
if row[index] in format_dict:
index_inc = index + 1
format_dict[row[index]].append(row[index_inc])
else:
index_inc = index + 1
format_dict[row[index]] = [row[index_inc]]
print(format_dict)
但是我得到一个空字典
我目前只是在控制台上打印,看看我是否成功地将它正确分组并正确存储它。我不知道如何在不使用 pandas 的情况下解决这个问题,因为我看到 pandas 也很强大,但因为它是家庭作业,我们被禁止使用它。如果我能得到正确的方向或指示我的逻辑是错误的,那就太好了
解决方案
推荐阅读
- sql - 使用group-by时如何将所有列聚合到SQL中的数组中?
- c# - 我对锯齿状数组感到困惑。我试图在访问、打印或更改元素时创建一个 for 循环。我怎样才能做到这一点?
- flutter - 无法使用颤振动画包创建动画
- python - ipywidgets Jupyter Notebook:选择多个复选框以过滤数据框并将其绘制出来
- python - 如何在Python数据框中获取多列的斜率
- visual-studio - 是否可以降级 Visual Studio For Mac 的版本?[由于热重载错误]
- ffmpeg - Node fluent ffmpeg:如何添加填充和背景图像?
- python - 在 python 中使用 sympy 库我想找到差异。这是我的代码
- python - 以 0 到 26 之间的整数计算“九”、“三”和“一”的个数
- javascript - 你好。如何在页面上显示 100 个结果 https://steamcommunity.com/market/search?appid=730