python - 如何将csv文件中的所有列更改为str?
问题描述
我正在编写一个脚本,该脚本导入一个 excel 文件,遍历名为“Title”的列,如果“Title”中存在某个关键字,则返回 False。脚本运行,直到我到达我想要导出另一个 csv 文件的部分,该文件给了我一个单独的列。我的错误如下:AttributeError: 'int' object has no attribute 'lower'
基于这个错误,我将 df.Title 更改为使用 的字符串df['Title'].astype(str)
,但我得到了同样的错误。
import pandas as pd
data = pd.read_excel(r'C:/Users/Downloads/61_MONDAY_PROCESS_9.16.19.xlsx')
df = pd.DataFrame(data, columns=['Date Added','Track Item', 'Retailer Item ID','UPC','Title','Manufacturer','Brand','Client Product
Group','Category','Subcategory',
'Amazon Sub Category','Segment','Platform'])
df['Title'].astype(str)
df['Retailer Item ID'].astype(str)
excludes = ['chainsaw','pail','leaf blower','HYOUJIN','brush','dryer','genie','Genuine
Joe','backpack','curling iron','dog','cat','wig','animal','dryer',':','tea', 'Adidas', 'Fila',
'Reebok','Puma','Nike','basket','extension','extensions','batteries','battery','[EXPLICIT]']
my_excludes = [set(x.lower().split()) for x in excludes]
match_titles = [e for e in df.Title.astype(str) if any(keywords.issubset(e.lower().split()) for
keywords in my_excludes)]
def is_match(title, excludes = my_excludes):
if any(keywords.issubset(title.lower().split()) for keywords in my_excludes):
return True
return False
这是返回错误的部分:
df['match_titles'] = df['Title'].apply(is_match)
result = df[df['match_titles']]['Retailer Item ID']
print(df)
df.to_csv('Asin_List(9.18.19).csv',index=False)
解决方案
使用以下代码导入您的文件:
data = pd.read_excel(r'C:/Users/Downloads/61_MONDAY_PROCESS_9.16.19.xlsx',
dtype='str')`
推荐阅读
- axios - 使用 axios 的内容类型
- sql - 按顺序排列多个值 (SQL)
- php - 我如何解决php中的“尝试访问int类型值的数组偏移量”错误
- azure-devops - Azure DevOps YML Pipeline 与 Classic 不同的 git checkout
- node.js - 如何在 Angular 服务器端渲染应用程序中访问请求正文?
- xamarin - 如何从 Xamarin C# 视图中的动态资源设置 FFImageLoading.SvgCachedImage 的 Source 属性?
- powerbi - Power BI:在自定义列中附加类似的表但为空
- java - 如何将父类属性添加到子类
- airflow - Airflow 远程日志记录不适用于调度程序和 dag_process_manager 日志
- python - 值错误预期 2D 数组改为 1D 数组