从单词列表中的Python /二进制表

时间:2018-04-25 12:00:27

标签: python-2.7 pandas dataframe binary

我想从文本文件中的单词列表创建二进制表。 (在Python中) 我收集了来自不同推文的所有单词,并将它们添加到字典中。(由Word1 Word2 Word3代表......在这里并且全部都有)

所以,在我的例子中,我的词典中的tweet1的所有单词。在第二条推文中,只有推文的第三个字出现在我的字典中。

        Word1 Word2 Word3 ...
Tweet1    1     1     1
Tweet2    0     0     1
Tweet3    0     0     0

收集的不同单词位于文本文件中:

April
Today
I'm
going
to
add
BLOOD
ALL
OVER
YOUR
HANDS

编辑: 当我在脚本中直接使用推文时,它运行良好。但是,当我把完全相同的推文放在一个文件中时,我有一个错误。

def tabBinaire():
with open("data", "r") as f:
    for line in f:
        defi = cool.DataFrame(line)
        print(defi)
        cv = CountVectorizer(token_pattern=r'\w{1,}')
        df1 = cv.fit_transform(defi['tweet'])
        output = cool.DataFrame(df1.todense(), columns=cv.get_feature_names())
        print(output)

我的档案:

{'tweet': ['how happy am i today','why is it not raining today','why is sky blue']}

错误:

Traceback (most recent call last):
  File "py2.py", line 42, in <module>
    tabBinaire();
  File "py2.py", line 33, in tabBinaire
    defi = cool.DataFrame(line)
  File "/Library/Python/2.7/site-packages/pandas/core/frame.py", line 404, in __init__
    raise ValueError('DataFrame constructor not properly called!')
ValueError: DataFrame constructor not properly called!

1 个答案:

答案 0 :(得分:0)

以下是您要执行的操作的最小示例:

from sklearn.feature_extraction.text import CountVectorizer
df = pd.DataFrame({'tweet': ['how happy am i today','why is it not raining today','why is sky blue']})

# initialise vectorizer
cv = CountVectorizer(token_pattern=r'\w{1,}')

# apply countvec
df1 = cv.fit_transform(df['tweet'])

# create output 
output = pd.DataFrame(df1.todense(), columns=cv.get_feature_names())

print(output)

enter image description here