我正在嘗試對我的 CSV 檔案進行排序,以便獲得最多金牌、銀牌和銅牌的球隊在串列的頂部,而那些最少的球隊在底部。
def rank_team(file_name):
import csv
file = open('medal.csv')
for line in file:
print(line)
pass
rank_team('medal.csv')
這是我現在擁有的代碼。只是想知道我將如何對這一切進行排序。
這是我正在使用的 CSV。 用于排序的 CSV
uj5u.com熱心網友回復:
使用csv.readerandcsv.writer函式以及sorted元組鍵:
import csv
with open('medal.csv', 'r') as in_file:
in_reader = csv.reader(in_file)
header = next(in_reader)
data = sorted(in_reader, key=lambda row: tuple(int(x) for x in row[1:]), reverse=True)
with open('sorted_medal.csv', 'w', newline='') as out_file:
out_writer = csv.writer(out_file)
out_writer.writerow(header)
out_writer.writerows(data)
結果:
# Input: medal.csv
team,gold,silver,bronze
t1,17,12,38
t2,8,7,29
t3,17,11,39
t4,17,12,37
t5,8,9,30
# Output: sorted_medal.csv
team,gold,silver,bronze
t1,17,12,38
t4,17,12,37
t3,17,11,39
t5,8,9,30
t2,8,7,29
uj5u.com熱心網友回復:
您可以使用sorted帶有關鍵條件的功能。
如果您想對 [Gold,Silver,Bronze] 進行升序排序,那么此代碼將對您有所幫助。
import csv
def rank_team(file_name):
with open('medal.csv') as f:
reader = csv.reader(f)
header = next(reader)
data = [row for row in reader]
print(header)
print(sorted(data, key=lambda x: (x[1], x[2], x[3])))
rank_team('medal.csv')
uj5u.com熱心網友回復:
你可以用pandas這個。讀取 csv 作為pd.DataFrame并使用sort_values方法:
import pandas as pd
df = pd.read_csv('medal.csv')
df = df.sort_values(by=['Gold','Silver','Bronze'], ascending=False)
注意:你描述的是降序。
uj5u.com熱心網友回復:
這是一個可能對您有所幫助的鏈接。將 3 更改為 0,因為您要使用第一列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/405599.html
標籤:
