0

我已经编写了一个函数来将句子分成单词,我需要从中创建特征。我遇到以下问题 1. 当我使用列表来保存所有值时,当我检索它们时,所有功能都创建为单列,而我需要将它们中的每一个作为单列 2. 即使我得到零除法错误我正在使用 if 条件检查计数是否为零

def token_features(q1,q2):
    stats = [0.0]*10

    q1_tokens = q1.split()
    q2_tokens = q2.split()

    q1_words = set([word for word in q1_tokens if word not in STOP_WORDS])
    q2_words = set([word for word in q2_tokens if word not in STOP_WORDS])
    common_word_count = len(set(q1_words) & set(q2_words))

    s1_stops = set([word for word in q1_tokens if word in STOP_WORDS])
    s2_stops = set([word for word in q2_tokens if word in STOP_WORDS])
    stop_word_count = len(s1_stops & s2_stops)    

    common_token_count = len(set(q1_tokens) & set(q2_tokens))

    if (common_word_count==0 or stop_word_count==0 or common_token_count==0):
        pass

    stats[0] = common_word_count/min(len(q1_words),len(q2_words))
    stats[1] = common_word_count/max(len(q1_words),len(q2_words))    
    stats[2] = stop_word_count/min(len(s1_stops),len(s2_stops))
    stats[3] = stop_word_count/max(len(s1_stops),len(s2_stops))
    stats[4] = common_token_count/min(len(q1_tokens),len(q2_tokens))
    stats[5] = common_token_count/max(len(q1_tokens),len(q2_tokens)) 
    stats[6] = int(q1_tokens[-1] == q2_tokens[-1])
    stats[7] = int(q1_tokens[0] == q2_tokens[0])
    stats[8] = abs(len(q1_tokens) - len(q2_tokens))
    stats[9] = (len(q1_tokens) + len(q2_tokens))/2 

    return stats

我需要的是 1. 如何在函数内部创建一个数据框并将其添加到另一个数据框。即,我有一个名为 out 的 Dataframe,其中包含 a、b 列。现在我需要在函数内创建一个数据框并将数据框的这些列添加到“out”数据框。

4

1 回答 1

0

如果我理解正确,您正在尝试这样做:

import pandas as pd

data = {'col_1': ['Yes','3'], 'col_2': ["2.0","Yes"]}
base_df=pd.DataFrame.from_dict(data)
def appendToDf(base_df):
    data = {'new1': ['Yes','3'], 'new2': ["2.0","Yes"]}
    dfNew=pd.DataFrame.from_dict(data)
    out_df=pd.concat([base_df,dfNew], axis=1)
    return out_df

appendToDf(base_df)
于 2020-03-27T06:31:35.943 回答