我有两个csv文件看起来
goals.csv
CLUB, GOALS FOR, GOALS AGAINST
liverpool, 45, 17
chelsea, 37, 23
arsenal, 39, 26和cards.csv
CLUB, YELLOW, RED
liverpool, 14, 1
chelsea, 12, 2
arsenal, 16, 4我试图将这两个文件组合起来,然后根据一个名为目标比率的新列进行排序,其中的比率是目标/目标相对
长得像
CLUB, GOALS FOR, GOALS AGAINST, YELLOW, RED, RATIO
liverpool, 45, 17, 14, 1, X
chelsea, 37, 23, 12, 2, X
arsenal, 39, 26, 16, 4, X我目前的代码是
import csv
from collections import OrderedDict, defaultdict
def facebook_dino():
goals = "goal.csv"
cards = "cards.csv"
new_dict = defaultdict()
with open(goals) as csv1:
goals_data = csv.DictReader(csv1)
with open(cards) as csv2:
cards_data = csv.DictReader(csv2)但无法找到基于NAME关键字参数组合两个CSV的方法。有熊猫也有可能吗?
发布于 2020-05-04 18:26:05
按名称的顺序排列行。
这是输出:
CLUB,GOALS FOR,GOALS AGAINST,YELLOW,RED,RATIO
liverpool,45,17,14,1,2.65
chelsea,37,23,12,2,1.61
arsenal,39,26,16,4,1.5这是密码
import csv
import os
goals_csv = os.path.join(os.getcwd(), 'goals.csv')
cards_csv = os.path.join(os.getcwd(), 'cards.csv')
output = os.path.join(os.getcwd(), 'combined.csv')
with open(goals_csv) as goals, open(cards_csv) as cards, open(output, 'w') as output:
goal_rows = csv.DictReader(goals)
card_rows = csv.DictReader(cards)
headers = "CLUB,GOALS FOR,GOALS AGAINST,YELLOW,RED,RATIO".split(",")
output_csv = csv.DictWriter(output, headers)
output_csv.writeheader()
while True:
goal_row = next(goal_rows, None)
if goal_row is None:
break
card_row = next(card_rows, None)
goal_row.update(card_row)
goals_against = float(goal_row['GOALS AGAINST'])
goals_for = float(goal_row['GOALS FOR'])
goal_row['RATIO'] = 0 if goals_against == 0 else round(goals_for / goals_against, 2)
output_csv.writerow(goal_row)https://stackoverflow.com/questions/61598599
复制相似问题