将计数器对象插入Dataframe python

时间:2015-11-12 08:08:39

标签: python pandas dataframe

我对插入计数器(集合)与数据帧混淆:

我的数据框看起来像,

doc_cluster_key_freq=pd.DataFrame(index=[], columns=['doc_parent_id','keyword_id','key_count_in_doc_cluster'])

sim_docs_ids=[3342,3783]  

the counters generated in for the sim_docs_ids are given below

id=3342
Counter({133: 9, 79749: 7})

id=3783
Counter({133: 10, 12072: 5, 79749: 1})

为每个sim_docs_id

循环生成计数器

我的代码如下:

for doc_ids in sim_docs_ids:
    #generate counter for doc_ids
    #insert the counter into dataframe (doc_cluster_key_freq) here

我正在寻找的输出如下:

 doc_cluster_key_freq=
     doc_parent_id       Keyword_id          key_count_in_doc_cluster     
 0     3342                  133                       9
 1     3342                 79749                      7
 2     3783                  133                       10
 3     3783                 12072                      5
 4     3783                 79749                      1

我尝试使用counter.keys()和counter.values,但我得到类似下面的内容,我不知道如何将它们分成不同的行:

    doc_parent_id       Keyword_id          key_count_in_doc_cluster     
 0      33342          [133, 79749]                [9, 7]
 1      3783        [12072, 133, 79749]          [5, 10, 1]

1 个答案:

答案 0 :(得分:1)

如果每个keyword的{​​{1}}数量相同,则可以为每条记录预先分配正确的行号,并使用下面的代码确保每行{{1}一行每个doc_id

keyword

一个例子:

doc_id

输出:

keywords = ['key1', 'key2', 'key3', ...]
number_of_keywords = len(keywords)

for i, doc_id in enumerate(sim_doc_ids):
    # Generate keyword Counter (counter) for doc_id
    for j, key in enumerate(keywords):
        doc_cluster_key_freq.loc[i * number_of_keywords + j] = [doc_id, key, counter[key]]