我需要从循环创建一个数据框。想法是循环将读取文本(train_vs)的数据帧并搜索特定的关键字['govern','data'],然后计算其频率或TF。我想要的是两列的结果,其中每一个文本的单词均为TF。我正在使用的代码如下:
d = pd.DataFrame()
key = ['govern', 'data']
for k in key:
for w in range(0, len(train_vs)):
wordcount = Counter(train_vs['doc_text'].iloc[w])
a_vs = (wordcount[k]/len(train_v.iloc[w])*1)
temp = pd.DataFrame([{k: a_vs}] )
d = pd.concat([d, temp])
但是,我得到了两列,但是对于整个文本列,第一个关键字的值和第二个值的nan,然后对整个文本列的值分别是nan和第二个值。因此结果数据框的行数是两倍。
我希望两个值彼此相邻。
非常感谢您的帮助。
谢谢。
答案 0 :(得分:0)
摘自pandas.concat文档:
合并具有重叠列的DataFrame对象,并返回所有内容。相交外的列将填充NaN值。
在进行关键更改循环时,您正在做的是尝试将只有一列('data'
)的新df(temp)连接到也只有一列({{ 1}}),这就是为什么您得到NAN的半栏。
除了建立数列之外,您可以做的不是连接数百万个数据帧,而是构建一个列。
'gonvern'