猿问

Python中的列选择

我试图找到以下给定问题的解决方案,但似乎我的方法出错了


我有一组 Excel,其中包含一些列,如 ISBN、Title 等。 Excel 中的列名称格式不正确。ISBN 在某些 Excel 文件中被命名为 ISBN,而在其他文件中它被命名为 ISBN-13、Alias、ISBN13 等。标题和其他列也是如此。


我已经使用 read Excel 在 python 中将所有这些 Excel 读取为数据框,并用于str.contains根据子字符串查找列。请在下面找到代码:


searchfor = ['ISBN13','BAR CODE','ISBN NO#','ISBN','ISBN1','ISBN 

13','ISBN_13','ITEM','ISBN NUMBER','ISBN No','ISBN-13','ISBN (13 

DIGITS)','EAN','ALIAS','ITEMCODE']



searchfor1 = ['TITLE','BOOK NAME','NAME','TITLE 

NAME','TITLES','BOOKNAME','BKDESC','PRODUCT NAME','ITEM DESCRIPTION','TITLE 

18','COMPLETETITLE']


for f, i in zip(files_txt1, num1): 

df = pd.read_excel(f,encoding='sys.getfilesystemencoding()') 

df.columns = df.columns.str.upper() 

df1['Isbn'] = df[df.columns[df.columns.str.contains('|'.join(searchfor))]]

df1['Title']= 

df[df.columns[df.columns.to_series().str.contains('|'.join(searchfor1))]]

如果我的 excel 列表中存在文本,则代码工作正常。但是,如果 excel 没有任何名称类似于列表的列,则会引发错误。代码也不适用于 ISBN。


请参阅下面的详细错误:


--------------------------------------------------------------------------- ValueError                                Traceback (most recent call last) C:\Users\Ruchir_Kumar_Jha\AppData\Local\Enthought\Canopy\edm\envs\User\lib\site-packages\pandas\core\common.py in _asarray_tuplesafe(values, dtype)

    376                 result = np.empty(len(values), dtype=object)

--> 377                 result[:] = values

    378             except ValueError:


ValueError: could not broadcast input array from shape (31807,0) into shape (31807)


During handling of the above exception, another exception occurred:


繁星coding
浏览 398回答 3
3回答
随时随地看视频慕课网APP

相关分类

Python
我要回答