【发布时间】:2020-04-22 03:55:27
【问题描述】:
我是 Pandas 的新手。
我的数据框
df
A
Best free
best free
free
free best
best
Nokia best for free
best nokia in 2020
best streaming platform for free
free streaming platform in 2020 for nokia phone
streaming for free Canada
...
我的 excel 文件 = file, file.Word 表示我对名为“Word”的文件和查看表感兴趣
file.ContainsBest
meilleur
beste
mejor
best
...
file.ContainsFree
gratuit
kostenlos
gratis
free
...
我想要的数据框
df
A Contains Best Contains Free
Best free True True
best free True True
free False True
free best True True
best True False
Nokia best for free True True
best nokia in 2020 True False
best streaming platform for free True True
free streaming platform in 2020 for nokia phone False True
streaming for free Canada False False
... ... ...
Excel file 将用作过滤器,我可以通过添加或减去来自不同工作表的单词来修改它,它将充当确定新 DataFrame 列是否包含 True 或 False 值的源。
到目前为止我已经尝试过:
file = pd.read_excel('config_values.xlsx')
print(file)
它打印出预期的第一个工作表值,一旦我添加sheet_name='ContainsBest',它就会抛出这个错误:
xlrd.biffh.XLRDError: No sheet named <'ContainsBest'>
但它确实会使用以下代码打开选定的工作表:
file = pd.read_excel(open('config_values.xlsx', 'rb'),
sheet_name='ContainsFree')
print(file)
这是否意味着pd.read_excel(open... 不能用于打开具有名称的第一张工作表?
所以我的问题可以分为两部分:
- 使用带有工作表的 excel 文件从其中的不同工作表中读取的正确方法
- 添加列并检查工作表中的值是否存在于其中的最佳方法是什么?使用
.isin()还是有更好的选择?
编辑 我可以使用:
df['Contains Free'] = df.Search_Query.str.contains('free', regex=True)
效果很好,但如果我像这样通过file:
file = pd.read_excel(open('config_values.xlsx', 'rb'),
sheet_name='ContainsFree')
df['Contains Free'] = df.Search_Query.str.contains(file, regex=True)
我收到此错误:
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
感谢您的建议。
【问题讨论】:
-
这个之前的回答有帮助吗:stackoverflow.com/questions/29700552/… ?
-
抱歉没有,我是 python 新手。我的意思是我没有尝试更改数据框,那么为什么它会抛出一个不可哈希的错误。
标签: python excel pandas dataframe