我有2个pandas数据帧df1和df2与公共列/键(x,y).
我想在键(x,y)上合并做一个"(df1¬ df2)"类型的合并,这意味着我希望我的代码只在df1而不是在df2中返回包含(x,y)行的数据帧.
SAS具有同等功能
data final;
merge df1(in=a) df2(in=b);
by x y;
if a & not b;
run;
Run Code Online (Sandbox Code Playgroud)
谁优雅地在熊猫中复制相同的功能?如果我们可以在merge()中指定how"= left-right",那将会很棒.
下面是我输入的pandas数据帧.
我想找到unigrams和bigrams的频率.我期待的样本如下所示
如何使用nltk或scikit学习?
我写了下面的代码,它以字符串作为输入.如何将其扩展到系列/数据框?
from nltk.collocations import *
desc='john is a guy person you him guy person you him'
tokens = nltk.word_tokenize(desc)
bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_words(tokens)
finder.ngram_fd.viewitems()
Run Code Online (Sandbox Code Playgroud) 链接中的散景0.12.1的官方文档提供了以下用于创建下拉列表的代码.
但是,当有人点击并从下拉列表中选择一个值时,它没有明确提到如何捕获下拉窗口小部件的值.
from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
output_file("dropdown.html")
menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)
show(widgetbox(dropdown))
Run Code Online (Sandbox Code Playgroud)
题
是看到有2个方法叫做on_click()&on_change()但是从文档中无法弄清楚如何捕获值.我们如何将选定的值分配给新变量?
编辑
根据@Ascurion的输入,我更新了我的代码,如下所示.但是当我在下拉列表中选择一个值时,Spyder的ipython控制台中不会打印任何内容.请指教.
from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
output_file("dropdown.html")
menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)
def function_to_call(attr, old, new):
print dropdown.value
dropdown.on_change('value', function_to_call) …Run Code Online (Sandbox Code Playgroud) 我想用一个新的列覆盖一个spark列,这是一个二进制标志.
我尝试直接覆盖列id2,但为什么它不像Pandas中的inplace操作那样工作?
如何在不使用withcolumn()创建新列和drop()来删除旧列的情况下执行此操作?
我知道spark数据帧是不可变的,这是因为没有使用withcolumn()&drop()而有不同的覆盖方式?
df2 = spark.createDataFrame(
[(1, 1, float('nan')), (1, 2, float(5)), (1, 3, float('nan')), (1, 4, float('nan')), (1, 5, float(10)), (1, 6, float('nan')), (1, 6, float('nan'))],
('session', "timestamp1", "id2"))
df2.select(df2.id2 > 0).show()
+---------+
|(id2 > 0)|
+---------+
| true|
| true|
| true|
| true|
| true|
| true|
| true|
+---------+
# Attempting to overwriting df2.id2
df2.id2=df2.select(df2.id2 > 0).withColumnRenamed('(id2 > 0)','id2')
df2.show()
#Overwriting unsucessful
+-------+----------+----+
|session|timestamp1| id2|
+-------+----------+----+
| 1| 1| NaN|
| 1| 2| 5.0|
| …Run Code Online (Sandbox Code Playgroud) dataframe apache-spark apache-spark-sql pyspark apache-spark-mllib
如何计算前3个窗口大小的美元滚动中位数?
输入数据
dollars timestampGMT
25 2017-03-18 11:27:18
17 2017-03-18 11:27:19
13 2017-03-18 11:27:20
27 2017-03-18 11:27:21
13 2017-03-18 11:27:22
43 2017-03-18 11:27:23
12 2017-03-18 11:27:24
Run Code Online (Sandbox Code Playgroud)
预期的输出数据
dollars timestampGMT rolling_median_dollar
25 2017-03-18 11:27:18 median(25)
17 2017-03-18 11:27:19 median(17,25)
13 2017-03-18 11:27:20 median(13,17,25)
27 2017-03-18 11:27:21 median(27,13,17)
13 2017-03-18 11:27:22 median(13,27,13)
43 2017-03-18 11:27:23 median(43,13,27)
12 2017-03-18 11:27:24 median(12,43,13)
Run Code Online (Sandbox Code Playgroud)
下面的代码确实移动avg但PySpark没有F.median().
编辑1:挑战是中位数()函数不退出.我不能做
df = df.withColumn('rolling_average', F.median("dollars").over(w))
Run Code Online (Sandbox Code Playgroud)
如果我想要移动平均线我就可以做到
df = df.withColumn('rolling_average', F.avg("dollars").over(w))
Run Code Online (Sandbox Code Playgroud)
编辑2:尝试使用approxQuantile()
windfun = Window().partitionBy().orderBy(F.col(date_column)).rowsBetwe??en(-3, 0) sdf.withColumn("movingMedian", sdf.approxQuantile(col='a', probabilities=[0.5], relativeError=0.00001).over(windfun))
Run Code Online (Sandbox Code Playgroud)
但是得到错误
AttributeError: …Run Code Online (Sandbox Code Playgroud) 我从这个Kaggle链接下载了大图像训练数据作为zip
https://www.kaggle.com/c/yelp-restaurant-photo-classification/data
我如何有效地实现以下目标?
谢谢
编辑:我尝试了下面的代码,但它崩溃了我的大型zip文件.有没有更好/更有效的方法来执行此操作,我可以在本地驱动器中指定文件的位置?
from google.colab import files
uploaded = files.upload()
for fn in uploaded.keys():
print('User uploaded file "{name}" with length {length} bytes'.format(
name=fn, length=len(uploaded[fn])))
Run Code Online (Sandbox Code Playgroud) python google-drive-api deep-learning jupyter-notebook google-colaboratory
如何使用 Pyspark 数据框做相当于 pd.concat([df1,df2],axis='columns') 的 Pandas?我用谷歌搜索并找不到一个好的解决方案。
DF1
var1
3
4
5
DF2
var2 var3
23 31
44 45
52 53
Expected output dataframe
var1 var2 var3
3 23 31
4 44 45
5 52 53
Run Code Online (Sandbox Code Playgroud)
编辑以包括预期的输出
对于以下数据帧
df=spark.createDataFrame(data=[('Alice',4.300),('Bob',7.677)],schema=['name','High'])
Run Code Online (Sandbox Code Playgroud)
当我试图找到最小值和最大值时,我只输出最小值.
df.agg({'High':'max','High':'min'}).show()
Run Code Online (Sandbox Code Playgroud)
+-----------+
|min(High) |
+-----------+
| 2094900|
+-----------+
Run Code Online (Sandbox Code Playgroud)
为什么agg()不能像熊猫一样给出最大和最小?
我有一台 Ubuntu 机器。如何安装 Visual Studio Code IDE?
这是公告,但无法弄清楚如何在 Ubuntu 中安装。
我可以安装 conda 吗?
我使用这个官方示例代码使用我自己的训练样本从头开始训练一个 NER 模型。
当我在新文本上使用此模型进行预测时,我想获得每个实体的预测概率。
Run Code Online (Sandbox Code Playgroud)# test the saved model print("Loading from", output_dir) nlp2 = spacy.load(output_dir) for text, _ in TRAIN_DATA: doc = nlp2(text) print("Entities", [(ent.text, ent.label_) for ent in doc.ents]) print("Tokens", [(t.text, t.ent_type_, t.ent_iob) for t in doc])
我无法在 Spacy 中找到一种方法来获得每个实体的预测概率。
我如何从 Spacy 获得这个概率?我需要它来应用截止。
python ×7
apache-spark ×4
pyspark ×4
pyspark-sql ×3
dataframe ×2
nlp ×2
pandas ×2
anaconda ×1
bokeh ×1
join ×1
merge ×1
ner ×1
nltk ×1
plot ×1
scikit-learn ×1
spacy ×1
text-mining ×1
ubuntu ×1
widget ×1