您好我正在寻找一些帮助来做excel中的索引匹配我是python的新手但是我的数据集现在远远超过excel
我会尽可能地愚蠢地解决我的问题,因为数据中包含很多与此问题无关的信息
CSV A(有3个基本列)
Name, Date, Value
CSV B(有2列)
Value, Score
CSV C(我想用python创建; 2列)
Name, Score
我想要做的就是输入一个日期并让它查找CSV A中与“日期”匹配的所有行,然后在CSV中查找与CSV中该行的“值”相关联的“得分” B并将其与人员姓名一起以CSV C格式返回。冲洗并重复每一行
任何帮助都非常感谢我似乎没有走得太远
答案 0 :(得分:0)
如果您使用的是unix,可以通过下面的shell脚本执行此操作 另外我假设您要在file_C中附加搜索输出,并且两个源文件中都没有重复
虽然如此
做
回声"输入日期..."
阅读日期
value_one = grep $date file_A | cut -d',' -f1
TMP1 = grep $date' file_A | cut -d',' -f3
value_two = grep $tmp1 file_B | cut -d',' -f2
echo" $ {value_one},$ {value_two}" >> FILE_C
echo"想要搜索更多日期...按y | Y,按任意其他键退出"
读取ch
如果[" $ ch" =" y" ] || [" $ ch" =" y" ]
然后
继续
否则
退出
网络连接
完成
答案 1 :(得分:0)
以下是使用Python's csv module的工作脚本:
它提示用户输入日期(格式为m-d-yy
),然后逐行读取csvA
以检查每行中的日期是否与输入的日期匹配。
如果是,它会检查与当前A行的日期对应的值是否与csvB
中的任何行匹配。
如果有匹配项,则会将csvA
的名称和csvB
的分数写为csvC
。
import csv
date = input('Enter date: ').strip()
A = csv.reader( open('csvA.csv', newline=''), delimiter=',')
matches = 0
# reads each row of csvA
for row_of_A in A:
# removes whitespace before and after of each string in each row of csvA
row_of_A = [string.strip() for string in row_of_A]
# if date of row in csvA has equal value to the inputted date
if row_of_A[1] == date:
B = csv.reader( open('csvB.csv', newline=''), delimiter=',')
# reads each row of csvB
for row_of_B in B:
# removes whitespace before and after of each string in each row of csvB
row_of_B = [string.strip() for string in row_of_B]
# if value of row in csvA is equal to the value of row in csvB
if row_of_A[2] == row_of_B[0]:
# if csvC.csv does not exist
try:
open('csvC.csv', 'r')
except:
C = open('csvC.csv', 'a')
print('Name,', 'Score', file=C)
C = open('csvC.csv', 'a')
# writes name from csvA and value from csvB to csvC
print(row_of_A[0] + ', ' + row_of_B[1], file=C)
m = 'matches' if matches > 1 else 'match'
print('Found', matches, m)
示例csv文件:
csvA.csv
Name, Date, Value
John, 2-6-15, 10
Ray, 3-5-14, 25
Khay, 4-4-12, 30
Jake, 2-6-15, 100
csvB.csv
Value, Score
10, 500
25, 200
30, 300
100, 250
示例运行:
>>> Enter date: 2-6-15
Found 2 matches
csvC.csv (由脚本生成)
Name, Score
John, 500
Jake, 250