我需要规范化包含全零填充的行的数据帧的行。例如:
df= pd.DataFrame({"ID": ['1', '2', '3', '4'], "A": [1, 0, 10, 0], "B": [4, 0, 30, 0]})
ID A B
1 1 4
2 0 0
3 10 30
4 0 0
Run Code Online (Sandbox Code Playgroud)
我的方法是首先排除零值行,然后使用以下方法规范化非零子集:
df1 = df[df.sum(axis=1) != 0]
df2 = df[df.sum(axis=1) == 0]
sum_row = df1.sum(axis=1)
df1.div(sum_row, axis=0)
Run Code Online (Sandbox Code Playgroud)
然后按如下方式连接两个数据帧:
pd.concat([df1, df2]).reset_index()
Run Code Online (Sandbox Code Playgroud)
但是,我在申请时遇到以下错误 df1.div(sum_row, axis=0)
ValueError: 操作数无法与形状 (6,) (2,) 一起广播
我想知道如何修复错误以及是否存在更有效的方法。谢谢!
编辑:预计生成的数据框如下所示:
ID A B
1 0.2 0.8
2 0 0
3 0.25 0.75
4 0 0
Run Code Online (Sandbox Code Playgroud) 我有一个datafarme,如下所示(有更多列已被删除):
memberID shipping_country
264991
264991 Canada
100 USA
5000
5000 UK
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用每个用户的运输国家/地区的现有值填充空白单元格:
memberID shipping_country
264991 Canada
264991 Canada
100 USA
5000 UK
5000 UK
Run Code Online (Sandbox Code Playgroud)
但是,我不确定在大规模数据集上执行此操作的最有效方法是什么.也许,使用矢量groupby方法?
我想知道如何在生产中部署 doc2vec 模型来创建词向量作为分类器的输入特征。具体来说,doc2vec 模型在语料库上进行如下训练。
dataset['tagged_descriptions'] = datasetf.apply(lambda x: doc2vec.TaggedDocument(
words=x['text_columns'], tags=[str(x.ID)]), axis=1)
model = doc2vec.Doc2Vec(vector_size=100, min_count=1, epochs=150, workers=cores,
window=5, hs=0, negative=5, sample=1e-5, dm_concat=1)
corpus = dataset['tagged_descriptions'].tolist()
model.build_vocab(corpus)
model.train(corpus, total_examples=model.corpus_count, epochs=model.epochs)
Run Code Online (Sandbox Code Playgroud)
然后将其转储到 pickle 文件中。词向量用于训练分类器(例如随机森林)来预测电影情绪。
现在假设在生产中,有一个文档包含一些全新的词汇。话虽如此,他们并不在 doc2vec 模型训练期间在场的人中。我想知道如何处理这样的情况。
作为旁注,我知道更新 gensim Doc2Vec 模型和Gensim 的训练文档:如何使用以前的 word2vec 模型重新训练 doc2vec 模型。然而,我希望能对此事有更多的了解。
下面是 python 中相当大的数据帧的一小部分。
ID invoiceDate
1 2017-07-18
2 2017-10-17
3 2017-08-20
4 2017-09-05
5 2017-08-20
6 2017-11-08
7 2017-09-17
8 2017-11-10
9 2017-08-14
10 2017-08-24
Run Code Online (Sandbox Code Playgroud)
鉴于利息期介于2017-07-13和 之间2017-11-21,则相当于 20 周。我需要将每个值映射invoiceDate到相应的周数。例如,2017-07-18映射到第 1 周(第一周分别在 和 开始和结束2017-07-13)2017-07-19或2017-08-20第 6 周(第六周分别在 和 开始2017-08-17和结束2017-08-23)。是invoiceDate对象类型。