【发布时间】:2014-09-10 19:04:48
【问题描述】:
现在,我的代码从文件 (BigramCounter.txt) 中获取抓取的网络数据,然后在该文件中找到所有的二元组,使数据看起来像这样:
Counter({('the', 'first'): 45, ('on', 'purchases'): 42, ('cash', 'back'): 39})
在此之后,我尝试将其输入到 pandas DataFrame 中,它将这个 df 吐出:
the on cash
first purchases back
0 45 42 39
这与我需要的非常接近,但并不完全。首先,DF 没有读取我对列命名的尝试。此外,我希望格式更像这样的东西,其中它的两列和单词不会在单元格之间拆分:
Words Frequency
the first 45
on purchases 42
cash back 39
作为参考,这是我的代码。我想我可能需要在某处重新排序轴,但我不确定如何?有什么想法吗?
import re
from collections import Counter
main_c = Counter()
words = re.findall('\w+', open('BigramCounter.txt', encoding='utf-8').read())
bigrams = Counter(zip(words,words[1:]))
main_c.update(bigrams) #at this point it looks like Counter({('the', 'first'): 45, etc...})
comm = [[k,v] for k,v in main_c]
frame = pd.DataFrame(comm)
frame.columns = ['Word', 'Frequency']
frame2 = frame.unstack()
frame2.to_csv('text.csv')
【问题讨论】:
-
你真的可以给 wither BigramCounter.txt 或一个中间数据帧吗,atm 目前还不清楚你在哪里/我们如何到达那里。
-
嗨,安迪,我现在在哪里是我的问题中的第二个格式。我有三个 ROWS,其中包含我的所有数据!
-
问题是,至少对我来说,它看起来不像 DataFrame,我不确定如何创建它(你有同样的东西)。也许您可以粘贴
.to_dict()的输出? -
好的——我更新了我的问题。是不是更清楚了?
-
我在这里仍然得到不同的框架。你能不能把一开始的东西去掉 findall 和东西,只用 bigrams = Counter({('the', ...}) 和构造 frame 和 frame2。(你也在使用旧版本的 pandas,更旧那个 0.14.1?这可以部分解释差异)
标签: python-3.x pandas