Python/Numpy(CSV) : Finding values, append 另一个 csv

标签 python csv numpy find append

我发现其他帖子与此密切相关,但它们没有帮助。

我有一个主 CSV 文件,我需要从第二列中查找特定的“字符串”。如下图所示:

Name,ID,Title,Date,Prj1_Assigned,Prj1_closed,Prj2_assigned,Prj2_solved
Joshua Morales,MF6B9X,Tech_Rep, 08-Nov-2016,948,740,8,8
Betty García,ERTW77,SME, 08-Nov-2016,965,854,15,12
Kathleen Marrero,KTD684,Probation, 08-Nov-2016,946,948,na,na
Mark León,GSL89D,Tech_Rep, 08-Nov-2016,951,844,6,4

ID 列是唯一的,因此我试图找到“KTD684”(例如)。找到后,我需要导出“Date”、“Prj1_Assigned”、“Prj1_close”、“Prj2_assigned”和“Prj2_solved”的值。

导出到文件“KTD684.csv”(与 ID 相同),其中已有可用 header “Date,Prj1_Assigned,Prj1_close,Prj2_assigned,Prj2_solved”

到目前为止(因为我是一名非程序员)我还无法起草这个,但是请有人指导我:

  1. 查找包含元素“KTD684”的行。
  2. 从该行中选择以下值: ['日期,Prj1_已分配,Prj1_已关闭,Prj2_已分配,Prj2_已解决']
  3. 请 append ID 名称本身的文件 ('KTD684.csv')

我需要对45个用户ID执行此操作,现在公司招聘了195个。我尝试编写excel宏(也不起作用),但我觉得python最可靠。

我知道我至少需要展示基本进度,但经过 2 个多月的尝试向某人学习后,我仍然无法在此 csv 中找到该元素。

最佳答案

如果我正确理解你的问题;您需要读取 2 个输入文件:

  • 1 包含您要查找的用户 ID

  • 2包含与用户相关的项目数据

以这种方式,类似的东西会找到您在文件 2 中指定的所有用户,并将它们写出到 result.csv

Sepicify your search IDs in search_for.csv. Keep in mind that this will revrite your result.csv every time you run it.

import csv
import sys
import os


inputPatterns = open(os.curdir + '/search_for.csv', 'rt')

# Reader for the IDs (users) you are looking to find (key)
reader = csv.reader(inputPatterns)

ids = []

# reading the IDs you are looking for from search_for.csv
for row in reader:
    ids.append(row[0])
inputPatterns.close()

# Let's see if any of the user IDs we are looking for has any project related info
# if so write them to your output CSV
for userID in ids:
    # Organization list with names and Company ID and reader
    userList = open(os.curdir + '/users.csv', 'rt')
    reader = csv.reader(userList)

    # This will be the output file
    result_f = open(os.curdir + "/" + userID + ".csv", 'w')
    w = csv.writer(result_f)
    # Writing header information
    w.writerow(['Date', 'Prj1_Assigned', 'Prj1_closed', 'Prj2_assigned', 'Prj2_solved'])

    # Scanning for projects for user and appending them
    for row in reader:
        if userID == row[1]:
            w.writerow([row[3], row[4], row[5], row[6], row[7]])
    result_f.close()
    userList.close()

例如,search_for.csv 看起来像这样

if your search_for.csv looks like this

关于Python/Numpy(CSV) : Finding values, append 另一个 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53302202/

相关文章:

c# - 使用 MVC、C# 和 jQuery 导出为 CSV

python - Python中的三角波形数组

python - 根据pandas中的另一个列值有条件地填充列值

python - 如何在 PyTorch 中更新神经网络的参数?

python - Flask 应用程序,按钮刷新浏览器。如何预防呢?

python - 提取字符串 split() 操作产生的单个项目

java - 在 Java 中,选项卡的 "char"是什么?如何传递 "Charset"?

c# - 使用 C# Windows 窗体应用程序将数据从 Excel (.CSV) 文件上传到 SQL

python - 如何在 Flask 中为动态生成的 jinja2 模板注册过滤器?

python - Scipy:数组中的稀疏指示矩阵