[英]Checking if value in pandas DataFrame series exists in excel sheets
我是熊猫的新手。
我的数据框
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
, 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...
ca pd.read_excel(open...
be used to open the first sheet with a name?
所以我的问题可以分为两个:
.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
谢谢你的建议。
最终使用此解决方案:
containsFree = pd.read_excel('config_values.xlsx',
sheet_name='ContainsFree', header=None)
containsFree = '|'.join(containsFree[0])
df['ContainsFree'] = df.SearchQuery.str.contains(
containsFree, regex=True, flags=re.IGNORECASE)
我在每个 Excel 表中都使用了相同的代码。 但是,对于第一张工作表,您不需要传递工作表名称,即使它是正确的,只需传递没有名称的文件:
containsbest = pd.read_excel('config_values.xlsx', header=None)
containsbest = '|'.join(containsbest[0])
df['Containsbest'] = df.SearchQuery.str.contains(
containsbest, regex=True, flags=re.IGNORECASE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.