首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两个csv文件与一个公共元素组合在一起,并在没有熊猫的情况下进行排序

将两个csv文件与一个公共元素组合在一起,并在没有熊猫的情况下进行排序
EN

Stack Overflow用户
提问于 2020-05-04 17:56:02
回答 2查看 96关注 0票数 0

我有两个csv文件看起来

goals.csv

代码语言:javascript
运行
复制
CLUB, GOALS FOR, GOALS AGAINST
liverpool, 45, 17
chelsea, 37, 23
arsenal, 39, 26

和cards.csv

代码语言:javascript
运行
复制
CLUB, YELLOW, RED
liverpool, 14, 1
chelsea, 12, 2
arsenal, 16, 4

我试图将这两个文件组合起来,然后根据一个名为目标比率的新列进行排序,其中的比率是目标/目标相对

长得像

代码语言:javascript
运行
复制
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

我目前的代码是

代码语言:javascript
运行
复制
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的方法。有熊猫也有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-04 18:26:05

按名称的顺序排列行。

这是输出:

代码语言:javascript
运行
复制
    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

这是密码

代码语言:javascript
运行
复制
    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)
票数 0
EN

Stack Overflow用户

发布于 2020-05-04 18:10:38

这里使用的是熊猫图书馆:

代码语言:javascript
运行
复制
import pandas as pd

df1 = pd.read_csv('goal.csv')
df2 = pd.read_csv('cards.csv')
for col in df2.columns:
    df1[col] = df2[col]
df1['RATIO'] = df1[' GOALS FOR']/df1[' GOALS AGAINST']
print(df1)

输出

代码语言:javascript
运行
复制
        CLUB   GOALS FOR   GOALS AGAINST   YELLOW   RED     RATIO
0  liverpool          45              17       14     1  2.647059
1    chelsea          37              23       12     2  1.608696
2    arsenal          39              26       16     4  1.500000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61598599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档