AzK*_*Kai 6 python csv sorting
我正在尝试订购一个只有300多个条目的.csv文件,然后将它全部输出,按照方言下一个特定列中的数值排序.这是我到目前为止编写的代码,但它似乎只是在输入时输出数据
import csv
import itertools
from itertools import groupby as gb
reader = csv.DictReader(open('Full_List.csv', 'r'))
groups = gb(reader, lambda d: d['red label'])
result = [max(g, key=lambda d: d['red label']) for k, g in groups]
writer = csv.DictWriter(open('output.csv', 'w'), reader.fieldnames)
writer.writeheader()
writer.writerows(result)
Run Code Online (Sandbox Code Playgroud)
整个文件中只有50行包含方言"红色标签"下的值,所有其他行都留空.它位于.csv的Z列中(但不是最后一列)所以我假设列的索引是25(0是第一个).任何帮助将不胜感激.
用熊猫怎么样?
import pandas as pd
df = pd.read_csv('Full_List.csv')
df = df.sort('red label')
df.to_csv('Full_List_sorted.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
您可能需要调整的选项read_csv,并to_csv以匹配您的CSV文件的格式.
groupby不是用于排序,而是用于对可迭代对象进行分块。供分拣使用sorted。
import csv
reader = csv.DictReader(open('Full_List.csv', 'r'))
result = sorted(reader, key=lambda d: float(d['red label']))
writer = csv.DictWriter(open('output.csv', 'w'), reader.fieldnames)
writer.writeheader()
writer.writerows(result)
Run Code Online (Sandbox Code Playgroud)
注意:我更改了lambda,将字符数据转换为浮点数,以进行正确的数字排序。
| 归档时间: |
|
| 查看次数: |
16546 次 |
| 最近记录: |