我正在尝试查找JSON文件的哪些行包含不包含某些单词的文本。我尝试这样做的方法是通过以下方式通过熊猫和正则表达式进行操作:
# import json module for parsing
import json
import re
import pandas
keywords1 = ('economic', 'economy', 'economies', 'Economic', 'Economy', 'Economies')
keywords2 = ('uncertain', 'uncertainty', 'uncertanties', 'Uncertain', 'Uncertainty', 'Uncertanties')
for i in range(2005,2016):
df = pandas.DataFrame([json.loads(l) for l in open('TH500_%d.json' % i)])
# match keywords
matchingbodies = df[~df.body.str.contains("|".join(keywords1))&~df.body.str.contains("|".join(keywords2))].body
# Count by row
counts = matchingbodies.groupby(lambda x: x.axes).agg(len)
print(counts)
想法是按行,轴对它进行分组,但是出现以下错误:AttributeError: 'Series' object has no attribute 'df'
。我知道我可能在犯一个愚蠢的错误...干杯
我认为您是否需要分组依据index
:
counts = matchingbodies.groupby(df.index).size()
或者:
counts = matchingbodies.groupby(level=0).size()
编辑:
看来您需要:
matchingbodies = df.loc[(~df.body.str.contains("|".join(keywords1)) &
(~df.body.str.contains("|".join(keywords2))), 'body']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句