我怎样才能缩短这个循环表时间过程

Posted

技术标签:

【中文标题】我怎样才能缩短这个循环表时间过程【英文标题】:how can i shorten this looping over the table time procces 【发布时间】:2022-01-04 01:18:18 【问题描述】:

我想总结“文本”列中超过 8 个字母的单词数/ 该表有超过 500,000 个值。 我对熊猫还不够熟悉。


def howmany8(array):  //returns the amount of words above 8 letter
  counter=0;
  for i in range(len(array)):
    if(len(array[i])>8):
      counter+=counter
  return counter 


newdf= df;
newdf.dropna(subset = ['text'])
newdf['wordssum']=newdf['text']

for i in range(len(newdf['text'])):
  newdf['wordssum'][i]= howmany8(re.split("\s",newdf['text'][i]))
print(newdf['words'].sum())

【问题讨论】:

我认为这可能有用:Python: Pandas filter string data based on its string length 【参考方案1】:

您似乎将“单词”视为非空白字符序列。如果是这种情况,您可以使用

df.dropna(subset=['text'], inplace=True)         # Remove NA values
df['wordssum'] = df['text'].str.count(r'\S8,') # Count occurrences of 8+ non-whitespace chunks
print(df['wordssum'].sum())                      # Print the sum of 'wordssum' column

如果你只想计算 8+ 个字母个单词,也就是整个单词,你需要使用

df['wordssum'] = df['text'].str.count(r'\b[^\W\d_]8,\b') # Count occurrences of whole 8+ letter words

或者,如果您不关心下划线或数字是否可以“粘贴”到字母:

df['wordssum'] = df['text'].str.count(r'[^\W\d_]8,') # Count occurrences of 8+ letter chunks

【讨论】:

以上是关于我怎样才能缩短这个循环表时间过程的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能缩短“foreach”以便它只显示 3 件事?

为啥这个 SQL 存储过程需要创建一个临时表才能工作(返回结果)?

存储过程中数据集的表名

如何每小时调用一次函数?另外,我怎样才能循环这个?

使用存储过程

我怎样才能避免这个css3背景循环跳转?