我试图了解熊猫包含功能是如何工作的。
假设我有以下内容:
xyz = ['Copyright', 'Microsoft', 'Abc'];
for i in range(0, len(xyz), 1):
x = z[z.all_data.str.contains(r'.*' + xyz[i] + '.*', regex=True)]
这就是我解释contains函数的方式:
“搜索DataFrame'z',列称为all_data,其中值 以任何东西开头,包含来自xyz的适当索引值, 然后以任何东西结尾。”
我的理解正确吗?
我有一个看起来像这样的DataFrame:
all_data file_name
4 * (c) Copyright abc123 Corp. 2015 All Right... filename.h
它没有使用“版权”一词,而是试图理解原因。
这是我到目前为止尝试过的:
我的代码适用于其他术语,但是该行中有某些内容无法正常工作。
答案 0 :(得分:0)
猜测您要为每个项目覆盖 x
...因此,如果x
为空,则意味着最后一个xyz
与任何内容都不匹配
查看此示例
import pandas
a = [
["4 * (c) Copyright abc123 Corp. 2015 All Right...","filename.h"],
["4 * (c) noCopy-right abc123 Corp. 2015 All Right...","filename.h"],
]
df = pandas.DataFrame(a,columns=['all_data','file'])
print(df)
print("MASK:", df.all_data.str.contains("Copyright"))
print("Matches:",df[df.all_data.str.contains("Copyright")])
答案 1 :(得分:0)
我发现我做错了。
之前:
x = z[z.all_data.str.contains(r'.*' + xyz[i] + r'.*', regex=True)]
之后:
x = z[z.all_data.str.contains(r'.*' + xyz[i] + r'.*', case=False,regex=True)]
在contains
函数中,大小写默认情况下设置为True,因此我必须将其更改为false,以使函数不区分大小写。设置为True时,区分大小写。
我的DataFrame列中具有“版权”,但是我的搜索条件是“版权”。
问题已解决:)