繁体   English   中英

从对创建熊猫数据框的快速方法

[英]Fast way to create pandas dataframe from pairs

我有一个很大的单词/标记对文件,像这样保存:

This/DT gene/NN called/VBN gametocide/NN

现在,我想将这些对以如下计数放入DataFrame:

      DT | NN --
This|  1   0
Gene|  0   1
 :

我尝试用一​​个对数进行计数的字典来执行此操作,然后将其放入DataFrame中:

file = open("data.txt", "r")

train = file.read()
words = train.split()

data = defaultdict(int)
for i in words:
    data[i] += 1

matrixB = pd.DataFrame()

for elem, count in data.items():
    word, tag = elem.split('/')
    matrixB.loc[tag, word] = count

但这要花很长时间(文件有300000个)。 有更快的方法吗?

您其他问题的答案出了什么问题

from collections import Counter

with open('data.txt') as f:
    train = f.read()
c = Counter(tuple(x.split('/')) for x in train.split())
s = pd.Series(c)
df = s.unstack().fillna(0)

print(df)

产量

            DT  NN  VBN
This         1   0    0
called       0   0    1
gametocide   0   1    0
gene         0   1    0

我认为这个问题非常相似...您为什么发表两次?

from collection import Counter

text =  "This/DT gene/NN called/VBN gametocide/NN"

>>> pd.Series(Counter(tuple(pair.split('/')) for pair in text.split())).unstack().fillna(0)

            DT  NN  VBN
This         1   0    0
called       0   0    1
gametocide   0   1    0
gene         0   1    0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM