小编Ast*_*oAT的帖子

根据pandas数据帧中的键列减去列

我有两个数据帧看起来像

DF1:

   ID    A   B   C   D 
0 'ID1' 0.5 2.1 3.5 6.6
1 'ID2' 1.2 5.5 4.3 2.2
2 'ID1' 0.7 1.2 5.6 6.0 
3 'ID3' 1.1 7.2 10. 3.2
Run Code Online (Sandbox Code Playgroud)

DF2:

   ID    A   B   C   D 
0 'ID1' 1.0 2.0 3.3 4.4
1 'ID2' 1.5 5.0 4.0 2.2
2 'ID3' 0.6 1.2 5.9 6.2 
3 'ID4' 1.1 7.2 8.5 3.0
Run Code Online (Sandbox Code Playgroud)

df1可以有多个相同的条目,ID而每个条目ID只在df2中出现一次.同样不是IDdf2中的所有都必须存在于df1中.我无法通过使用set_index()df1中的多行来解决这个问题ID,并且IDdf1和df2中没有对齐.

我想创建一个新的数据帧,我根据匹配ID 减去df2[['A','B','C','D']]from中的值df1[['A','B','C','D']]. …

python dataframe python-3.x pandas

12
推荐指数
2
解决办法
1858
查看次数

错误:在 Jupyter Notebook (sklearn) 中找不到模块

scikit-learn在 Jupyter 笔记本中导入时遇到问题,我不知道为什么这不起作用。我不记得以前使用其他软件包时遇到过这个问题。我已经看到几个线程与这个特定模块有类似问题的人有类似的问题,但是建议的检查都没有解决我的问题,也没有告诉我可能有什么问题。我试图在下面添加尽可能多的信息,试图找出为什么这拒绝工作。

我使用 anaconda 来管理我的包,scikit-learn安装方式如下:

source activate python3
conda install scikit-learn
Fetching package metadata .............
Solving package specifications: .

# All requested packages already installed.
# packages in environment at /Users/overaa/anaconda/envs/python3:
#
scikit-learn              0.19.1           py36hffbff8c_0  
Run Code Online (Sandbox Code Playgroud)

现在,如果我直接从命令行启动 python 会话,import sklearn将按预期工作并且模块已正确导入。在 Jupyter 中做同样的事情会导致

ModuleNotFoundError: No module named 'sklearn'

我已经检查了很多东西。首先,确保我的 jupyter 和 jupyter-notebook 指向正确的环境

which jupyter
/Users/user_name/anaconda/envs/python3/bin/jupyter
which jupyter-notebook
/Users/user_name/anaconda/envs/python3/bin/jupyter-notebook
Run Code Online (Sandbox Code Playgroud)

所以笔记本检查出来了。

然后从命令行 python 会话(在与我启动笔记本的环境相同的环境中):

>>> import sklearn
>>> sklearn.__file__
'/Users/user_name/anaconda/envs/python3/lib/python3.6/site_packages/sklearn/__init__.py'
Run Code Online (Sandbox Code Playgroud)

所以scikit-learn也安装在正确的环境中。

现在比较我正在运行相同的版本;

从命令行:

>>> …
Run Code Online (Sandbox Code Playgroud)

python-3.x scikit-learn jupyter-notebook

5
推荐指数
1
解决办法
1万
查看次数

从散景图中清除数据点

我对 Bokeh 还是有点陌生​​,并且遇到了一个无法解决的问题。

我有一个散景图,在两个单独的图中可视化一些流数据。由于各种原因,绘图的用户可能希望在单击按钮时清除当前数据点的两个绘图。

清除数字的好方法是什么?我还没有找到好的解决方案。

我的代码看起来像这样:

#Defining plots
plot_data = ColumnDataSource(dict(x=[],y=[],z=[]))

p = figure(plot_height = 600, plot_width = 800, 
               x_axis_label = 'X', 
               y_axis_label = 'Y')
p2 = figure(plot_height = 600, plot_width = 800, 
               x_axis_label = 'X', 
               y_axis_label = 'Z')

doc = curdoc()
Run Code Online (Sandbox Code Playgroud)

数据源在异步循环中更新:

async def loop():
    while True:
        data = await socket.recv_pyobj()
        new_data = get_last_data(data)
        #update ColumnDataSource
        doc.add_next_tick_callback(partial(update,new_data))

doc.add_root(column(gridplot([p,p2], plot_width=1000)))

try:        
    testloop = IOLoop.current()
    testloop.spawn_callback(loop)
except KeyboardInterrupt:
    testloop.close()
Run Code Online (Sandbox Code Playgroud)

ColumnDataSource当流中出现新数据点(解析为数据帧)时,将通过以下函数进行更新

def update(new_data):
    input_data = dict(x=new_data['x'], y=new_data['y'], z=new_data['z'])
    plot_data.stream(input_data, rollover=500)
Run Code Online (Sandbox Code Playgroud)

我通过单击按钮清除数字的最初想法如下: …

python python-3.x bokeh

0
推荐指数
1
解决办法
2717
查看次数