小编and*_*ler的帖子

Pandas:连接数据帧并保留重复索引

我有两个数据帧,我想按列连接(轴= 1)与内连接.其中一个数据帧有一些重复的索引,但行不是重复的,我不想丢失那些数据:

df1 = pd.DataFrame([{'a':1,'b':2},{'a':1,'b':3},{'a':2,'b':4}],
                   columns = ['a','b']).set_index('a')

df2 = pd.DataFrame([{'a':1,'c':5},{'a':2,'c':6}],columns = ['a','c']).set_index('a')

>>> df1
   b
a   
1  2
1  3
2  4
8  9

>>> df2
   c
a   
1  5
2  6
Run Code Online (Sandbox Code Playgroud)

默认concat行为是使用NaN填充缺失值:

>>> pd.concat([df1,df2])
    b   c
a
1   2 NaN
1   3 NaN
2   4 NaN
1 NaN   5
2 NaN   6
Run Code Online (Sandbox Code Playgroud)

我想保留df1中的重复索引并用df2中的重复值填充它们,但是在pandas 0.13.1中,列上的内连接会产生错误.在更新版本的pandas concat做我想要的:

>>> pd.concat([df1, df2], axis=1, join='inner')
   b  c
a      
1  2  5
1  3  5
2  4  6
Run Code Online (Sandbox Code Playgroud)

达到我想要的结果的最佳方法是什么?有没有groupby解决方案?或者也许我根本不应该使用concat

python concat pandas

9
推荐指数
1
解决办法
7442
查看次数

停止在 spyder 中显示图

我有制作大量情节的脚本。我直接用plt.savefig()而不是保存它们,plt.show()所以我不必关闭所有窗口。在 spyder 中,如果我使用内联(意味着我必须向后滚动才能看到其他输出),它们都会显示在控制台中,如果我使用自动,它们都会显示在单独的窗口中。我希望他们根本不要出现,因为我plt.show()从来不打电话。我怎样才能做到这一点?

注意:两个建议的答案都有效!谢谢!我选择 plt.ioff() 作为正确答案,因为我可以选择为某些脚本而不是其他脚本执行此操作。

python matplotlib spyder

5
推荐指数
2
解决办法
3763
查看次数

Sypyder中的IPython控制台在Anaconda中非常慢

在使用标准python安装/ IDLE几年之后,我正在尝试Anaconda / Spyder。在我运行的每个脚本和交互式命令中,控制台(和变量资源管理器)在每个工作会话期间会逐渐变慢。最终,要花几分钟才能获得对诸如print之类的简单命令的响应,然后它完全停止响应,因此我将其关闭。这对我的工作相当破坏。

Mac OSX 10.13.6

conda version : 4.5.11
conda-build version : 3.15.1
python version : 3.7.0.final.0

qt 5.9.6
spyder 3.3.1 
ipython 7.1.1
Run Code Online (Sandbox Code Playgroud)

我确实经常使用matplotlib。只要有可能,我都会在脚本开头使用plt.ioff(),并在结尾处使用plt.close('all')。在首选项中完全关闭matplotlib支持无济于事,而且它也不是永久性的解决方法。Python没有在我所有的CPU或RAM附近使用任何地方。

python ipython spyder anaconda

4
推荐指数
3
解决办法
4157
查看次数

标签 统计

python ×3

spyder ×2

anaconda ×1

concat ×1

ipython ×1

matplotlib ×1

pandas ×1