使用熊猫从 csv 中删除值



>我有一个 csv,我想用它来在 api 中搜索数据,但是存储用于 api 搜索的数据的行可以包含第二个值,用;喜欢这个:

2 Jan Rohls Kunst und Religion zwischen Mittelalter und Barock : von Dante bis Bach -
3 Karl-Markus Ritter    Der Dom zu Speyer : weltliche Macht und christlicher Glaube 9783806241280; 3806241287
4 Hape Kerkeling    Ich bin dann mal weg : meine Reise auf dem Jakobsweg    9783890296005; 3890296009

我想删除;之后的值,以便只有 9783XXX 保留在 ISBN 行中。如果代码可以包含在现有流程中,那就太完美了,但我还没有找到如何管理它的方法。

以下是完整提取的csv: https://pastebin.com/frAK9NBG

这些是我用来

a) CLean 一个预先存在的 csv:

import pandas as pd
import glob
import os
path= "./**/extract/"
filelist=glob.glob('./**/Reihe A/Reihe*.csv',recursive=True)
print(filelist)
for file in filelist:
data=pd.read_csv(file, sep="t",  encoding='utf8')
data.columns
title=[] #this gets all the titles
for row in data['Titel']:
title.append(row)
author=[] #this gets all the authors
for row in data['Verfasser']:
author.append(row)
isbn=[] #this gets all the isbns
for row in data['ISBN']:
isbn.append(row)
df=pd.DataFrame({'Verfasser': author, 'Titel': title, 'ISBN': isbn}) #create new csvs based on extracted data
#save csv in set path
df.to_csv(path + file +"_" +"extract", sep='t', encoding='utf8')
#df.to_csv(path + file +'_' + 'extract.csv', sep="t") #add endpath ,  encoding='utf-8' back if needed
print(file +'_' + 'extract.csv' + ' saved to ' + path)

b) 搜索接口

import glob
import pandas as pd
from urllib.request import urlopen
#import generated csvs from other script
filelist=glob.glob('./**/Reihe*_extract.csv',recursive=True)
print(filelist)
for file in filelist:
#read csv, make a list of all isbns
data=pd.read_csv(file, sep="t",  encoding='utf8')
isbnlist=[]
for row in data['ISBN']:
isbnlist.append(row)
#for each isbn in list, get data from api
for isbn in isbnlist:
url = 'http://sru.k10plus.de/gvk!rec=1?version=1.1&operation=searchRetrieve&query=pica.isb%3D[isbn]&maximumRecords=10&recordSchema=marcxml'  
url = url.replace('[isbn]', isbn)
print(url)

截至目前,我正在根据代码的功能(干净的csv,搜索API等)拆分代码,但我计划制作一个为最终用户完成所有操作的启动器脚本。

任何帮助,不胜感激。

试试这个,按分隔符拆分并保持想要的拆分:

data['ISBN'] = [x.split(' ')[0] for x in data['ISBN']] #keeps first portion of split.

相关内容

  • 没有找到相关文章

最新更新