Python 标记";“真的”;在一次迭代中包含关键字(关键字为列名)的行
我想对pandas dataframe进行关键字搜索,将每个关键字作为一列添加到数据集中,并标记包含该关键字的数据行的“True” 一段代码很好地实现了这一点:Python 标记";“真的”;在一次迭代中包含关键字(关键字为列名)的行,python,pandas,dataframe,Python,Pandas,Dataframe,我想对pandas dataframe进行关键字搜索,将每个关键字作为一列添加到数据集中,并标记包含该关键字的数据行的“True” 一段代码很好地实现了这一点: stocks=['Microsoft'、'Apple'、'Amazon'] 对于库存: df[stock]=df.astype(str).sum(axis=1).str.contains(stock) 但是,对于每个关键字,这会在整个数据集中循环一次。我想在一次迭代中做同样的事情(即每行只检查一次关键字的存在),因为我的数据集很大 预
stocks=['Microsoft'、'Apple'、'Amazon']
对于库存:
df[stock]=df.astype(str).sum(axis=1).str.contains(stock)
但是,对于每个关键字,这会在整个数据集中循环一次。我想在一次迭代中做同样的事情(即每行只检查一次关键字的存在),因为我的数据集很大
预期结果如下:
任何帮助都将不胜感激
编辑:我得到一个内存错误 我无法想象有什么东西不经过三个键就可以做你想要的事情 不过,我有两个建议:
my_df.to_csv("my_file.csv")
或者,如果您想更快,请使用该格式
text_series = df[stock].astype(str).sum(axis=1)
for stock in stocks:
df[stock] = text_series.str.contains(stock)
batch_size = df.shape[0]/10 # e.g. divide your df in 10 chunks
for i in range(0,df.shape[0],batch_size): #batch_size is the step
for stock in stocks:
df[i:i+batch_size][stock] = text_series[i:i+batch_size].str.contains(stock)
text_series = df[stock].astype(str).sum(axis=1)
for stock in stocks:
df[stock] = text_series.str.contains(stock)
batch_size = df.shape[0]/10 # e.g. divide your df in 10 chunks
for i in range(0,df.shape[0],batch_size): #batch_size is the step
for stock in stocks:
df[i:i+batch_size][stock] = text_series[i:i+batch_size].str.contains(stock)
注意:您的数据库必须能被10整除,否则请选择另一个除数我想将其保存到csv,但必须先生成结果。这并不是因为我没有足够的内存,而且我在中途遇到了内存错误。我会看看第二种方法是否有效,但我相信我的代码需要一个更基本的更改,比如保存中间步骤。将其分成批这似乎是最好的选择。谢谢(顺便说一句,我想投你一票,但我不能!)如果你能选择它作为最佳答案,我将不胜感激。我也是新来的,所以我不知道你能不能。