尽管有很多关于将数据追加到数据帧的堆栈溢出问题,但我确实无法找到以下答案。我正在寻找一个简单的解决方案,以将列表追加为数据框的最后一行。想象一下,我有一个简单的数据框:
indexlist=['one']
columnList=list('ABC')
values=np.array([1,2,3])
# take care, the values array is a 3x1 size array.
# row has to be 1x3 so we have to reshape it
values=values.reshape(1,3)
df3=pd.DataFrame(values,index=indexlist,columns=columnList)
print(df3)
A B C
one 1 2 3
Run Code Online (Sandbox Code Playgroud)
经过一些操作后,我得到以下列表:
listtwo=[4,5,6]
Run Code Online (Sandbox Code Playgroud)
我想将其附加在数据框的末尾。我将该列表更改为一系列:
oseries=pd.Series(listtwo)
print(type(oseries))
oseries.name="two"
Run Code Online (Sandbox Code Playgroud)
现在,这不起作用:
df3.append(oseries)
Run Code Online (Sandbox Code Playgroud)
因为它给出:
A B C 0 1 2
one 1.0 2.0 3.0 NaN NaN NaN
two NaN NaN NaN 5.0 6.0 7.0
Run Code Online (Sandbox Code Playgroud)
我想拥有AB和C下的值。
我也尝试过:
df3.append(oseries, columns=list('ABC')) *** not working ***
df3.append(oseries, ignore_index=True) *** working but wrong …Run Code Online (Sandbox Code Playgroud) 我对 NLP 比较陌生,我正在尝试创建自己的单词嵌入,并在我的个人文档语料库中进行训练。
我正在尝试实现以下代码来创建我自己的单词嵌入:
model = gensim.models.Word2Vec(sentences)
Run Code Online (Sandbox Code Playgroud)
句子是句子列表。由于我无法传递成千上万的句子,所以我需要一个迭代器
# with mini batch_dir a directory with the text files
# MySentences is a class iterating over sentences.
sentences = MySentences(minibatch_dir) # a memory-friendly iterator
Run Code Online (Sandbox Code Playgroud)
我在 gensim 的创建者那里找到了这个解决方案:
class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
for fname in os.listdir(self.dirname):
for line in open(os.path.join(self.dirname, fname)):
yield line.split()
Run Code Online (Sandbox Code Playgroud)
它对我不起作用。如果我知道如何从每个文档中获取句子列表,如何创建迭代器?
第二个非常相关的问题:如果我的目标是比较特定语料库中的文档相似性,那么从头开始使用该特定语料库的所有文档创建词嵌入总是比使用 GloVec 或 word2vec 更好吗?文档量约为40000篇。
干杯
更多预
我想用它spacy从文本中取出句子。
nlp = English() # just the language with no model
sentencizer = nlp.create_pipe("sentencizer")
nlp.add_pipe(sentencizer)
doc = nlp("This is a sentence. This is another sentence.")
for sent in doc.sents:
print(sent.text)
Run Code Online (Sandbox Code Playgroud)
是否有可能提高句子分割器绕过规则的可靠性,例如从不在像“no.”这样的首字母缩略词之后分割句子。
当然,想象一下我有一堆非常技术性和特殊的缩写词。
你将如何进行?
我正在 Excel 中使用列表对象,但遇到以下问题:每次运行代码时,我都会将数据添加到表中。以前我必须删除所有旧数据。
ThisWorkbook.Sheets("comm").ListObjects(1).DataBodyRange.Delete
Run Code Online (Sandbox Code Playgroud)
之后发生的事情是我收到一个错误:
myNrofRowsinCOMM = COMMtbl.DataBodyRange.Rows.Count
Run Code Online (Sandbox Code Playgroud)
我看了这个帖子无济于事。我还是不明白这是怎么回事。
我也尝试了以下操作:
MsgBox "COMMtbl.Range.Rows.Count:" & COMMtbl.Range.Rows.Count
MsgBox "COMMtbl.ListRows.Count:" & COMMtbl.ListRows.Count
MsgBox "COMMtbl.databodyRange.Rows.Count:" & COMMtbl.DataBodyRange.Rows.Count
If COMMtbl.Range.Rows.Count = 1 Then
COMMtbl.ListRows.Add (1)
End If
Run Code Online (Sandbox Code Playgroud)
如果表是空的(行标题和第一行是空的),第一行给出 2。所以范围有 2 行,这似乎符合现实。COMMtbl.Range.Rows.Count=2 第二个给出 0。我完全不明白。COMMtbl.ListRows.Count=0 第三个给出错误“未设置对象变量或 withblcok 变量”
我正在尝试向表中添加行并用数据填充它们,为此我添加了一行并填充它。我想在最后添加一行,因此我每次都需要计算行数。一切都很好,除了我之前删除了表格的整个内容时的第一个,看起来像:
欢迎任何帮助
非常感谢。
我有几张包含 ListObjects 的工作表
当我必须在 listbject 中寻找相应的值时,我会做以下事情:
dim mytable as Listobject
set mytable = thisworkbook.sheets(x).listobject(1)
ValuetoSearch="whatever"
valueResult=""
' looking for the corresponding value of column A in column B
for i=1 to mytable.listrows.count
if mytable.listcolumns("A").databodyrange.item(i).value=ValuetoSearch then
valueResult=mytable.listcolumns("B").databodyrange.item(i).value
exit for
end if
next i
Run Code Online (Sandbox Code Playgroud)
那个有效。美好的。但:
这是进行搜索的最快方式吗?当用户选择工作表中的某些单元格(使用工作簿更改选择)时,我正在“即时”使用其中的几个查找操作,并且当“您感觉到它”时,这几乎是第二个延迟开始对用户来说很烦人。
欢呼谢谢