小编Ben*_*dee的帖子

将列附加到pandas数据帧

这可能很简单,但我有以下数据:

在数据框1中:

index dat1
0     9
1     5
Run Code Online (Sandbox Code Playgroud)

在数据框2中:

index dat2
0     7
1     6
Run Code Online (Sandbox Code Playgroud)

我想要一个具有以下形式的数据框:

index dat1  dat2
0     9     7
1     5     6
Run Code Online (Sandbox Code Playgroud)

我尝试过使用这种append方法,但我得到了一个交叉连接(即笛卡尔积).

这样做的正确方法是什么?

python pandas

84
推荐指数
4
解决办法
24万
查看次数

在PyCharm中进行单元测试时如何查看日志消息?

我确定这是一个简单的修复,但我想在运行单元测试时在PyCharm控制台中查看日志消息.我正在测试的模块有自己的记录器,通常我会设置一个根记录器来捕获某个级别的调试消息,并将其他日志传递给一个文件.但我无法弄清楚它如何与单元测试一起工作.

我正在使用unittest2模块,并使用PyCharm的自动测试发现(可能是基于鼻子,但我不知道).

我试过愚弄运行配置,但似乎没有一种简单的方法来做到这一点.

如果你们中的任何人在那里工作,那么PyCharm文档在这里也没有特别的帮助.


在编辑中:它似乎表明控制台捕获了关键级别的日志消息.我想知道是否有办法配置它来捕获调试级别的消息.


这篇文章(Pycharm单元测试交互式调试命令行不起作用)建议将-s选项添加到构建配置,这不会产生所需的结果.

python pycharm

18
推荐指数
1
解决办法
6686
查看次数

PyDev中假未解决的导入错误

PyDev报告了不存在的导入错误.最初的症状是一个假的"未解决的导入"错误,它由以下组合修复:

  • 清洁项目
  • 重新索引项目(删除解释器,再次添加)
  • 重启Eclipse
  • 向蟒蛇神焚烧香

现在错误是"导入的未验证变量" - 它似乎无法找到pymssql.connect.

这不是PYHTONPATH问题.我可以很好地访问模块,文件中的代码(涉嫌)错误运行正常 - 它有单元测试和生产代码调用它.

错误发生在PyDev中:我向PyDev项目添加了一个新模块,错误只发生在新模块中.我已经尝试了以上所有内容.


所以,我打算在其他地方发布这个代码来征求关于设计的一些评论,我在评论中被要求发布代码.(灵感来自:数据库连接包装器和Clint Miller对这个问题的回答:如何正确清理Python对象?).导入错误发生在第69行(self.connection = pymssql.connect ...).不知道这回答这个问题有什么好处,但......

import pymssql
from util.require_type import require_type

class Connections(object):
    @require_type('host', str)
    @require_type('user', str)
    @require_type('password', str)
    @require_type('database', str)
    @require_type('as_dict', bool)
    def __init__(self, host, user, password, database, as_dict=True):
        self.host = host
        self.user = user
        self.password = password
        self.db = database
        self.as_dict = as_dict

    @staticmethod
    def server1(db):
        return Connections('','','','')

    @staticmethod
    def server2(db):
        pass

    @staticmethod
    def server3(db):
        pass


class DBConnectionSource(object):
    # Usage:
    #        with …
Run Code Online (Sandbox Code Playgroud)

python eclipse pydev

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

比较两个不同LINQ语句的效率

我正在学习C#(C++中的背景),我对LINQ表达式有疑问.以下两个函数都做同样的事情(尽我所知).袋熊的类型是System.Data.Linq.Table<Wombat>.

我很想知道

  1. 哪个更有效率?
  2. 它甚至重要吗?
  3. 返回IQueryqble可以获得一些东西吗?
  4. 这里有一些礼仪更喜欢三个中的一个吗?

我的猜测是第二种效率更高,但除非袋熊桌上有数百万只袋熊,否则它并不重要.返回IQueryable并不重要,因为我们只返回一个袋熊.

提前致谢!

    public static DBConnector.Connections.Wombat getWombat(String wombatID)
    {
        var db = getDBInstance();
        return db.Wombats.FirstOrDefault(x => x.ID.ToString() == wombatID);
    }

    public static DBConnector.Connections.Wombat getWombat(String wombatID)
    {
        var db = getDBInstance();
        var guid = new System.Guid(wombatID);
        return db.Wombats.FirstOrDefault(x => x.ID == guid);
    }
Run Code Online (Sandbox Code Playgroud)

c# linq

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

为什么'list'不是Python中的保留字?

我只是得到了一个可以防止的错误,如果它list是Python中的保留字.(Dumbery就我而言,当然.)

那么为什么列表(或dict或float或任何类型)不是保留字?添加解释器错误似乎比尝试记住规则更容易.

(我也知道Eclipse/PyDev有一个设置会提醒你这个规则,这可能很有用.)

python python-2.7

4
推荐指数
1
解决办法
3038
查看次数

如何为PyDev制作文件模板?

我想在我创建的每个新文件的顶部都有一些关于许可证,作者等的样板信息,但我找不到正确的方框来勾选.

基本上,我想创建一个新文件,并已经填充(在顶部)

'''
   author: Me
   license: something
   copyright: something
'''
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

python eclipse pydev

3
推荐指数
1
解决办法
3863
查看次数

长时间运行的python脚本的故障保护

这可能是有史以来最愚蠢的问题,但我想知道是否有办法在函数(最好是装饰器)周围编写一个包装器,这样你就可以在异常情况下捕获局部变量的内部状态.在这个职能中提出 它会捕获当地人创建它们,腌制它们,然后在没有引发异常的情况下处理它们,或者如果发现任何异常则将它们写入文件.

这太过于幻想了,还是有人因这样的事情而被骗了?

python

3
推荐指数
1
解决办法
750
查看次数

有没有办法"版本化"我的python发行版?

我现在正在自己工作,但我正在寻找扩展我的操作的方法.

我想找一个简单的方法来版本化我的Python发行版,这样我就可以很容易地重新创建它.有没有工具可以做到这一点?或者我可以添加/usr/local/lib/python2.7/site-packages/(或其他)svn回购?这并没有解决PATHs 的问题,但我总是可以写一个脚本来改变路径.理想情况下,解决方案是在VM中构建我的Python env,然后将VM的副本移出.

别人怎么解决这个问题?

python

3
推荐指数
2
解决办法
92
查看次数

访问虚拟机中的SQL Server实例

首先,我的设置:

  • Mac OSX 10.8
  • 在VM中运行的Windows 7(VMWare Fusion)
  • 在VM中运行的SQL Server 2008 R2
  • 大量的Python脚本+我在Mac端的高度自定义的Python安装.

我希望能够在我的笔记本电脑上本地运行脚本,对照我的开发数据库的快照,该数据库很快就存在于我的VM中.我也不想让PITA在Windows VM中重建我的Python安装.

所以问题是:如何从Mac端访问我的VM中运行的SQL Server实例?要访问生产数据,我使用的是基于FreeTDS的pymssql.

macos sql-server-2008 windows-7 vmware-fusion pymssql

2
推荐指数
1
解决办法
2047
查看次数

使用Launchd运行Python脚本:未找到导入

我一直在尝试设置一个脚本来定期运行python程序launchd.python程序失败,因为它无法找到我的导入---我知道这是因为我在日志文件中捕获了错误.为了解决这个问题,我在那里创建~\.MacOSX\environment.plist并复制了我PYTHONPATH,注销并再次登录.这似乎不足以解决问题,我不知道还有什么可以尝试.

我正在运行OSX,10.8.3.

相关主题:

更新:

看来我可以运行以下命令:

launchctl setenv PYTHONPATH $PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

并且脚本将成功执行.所以,修改我的问题:

  1. 这存储在哪里?我检查~\.launchd.conf\etc\.launchd.conf,也不存在了.
  2. 据推测,重新启动时会转储此设置.我在哪里可以更改此信息以便launchd找到它?

python launchd osx-mountain-lion

2
推荐指数
1
解决办法
2943
查看次数

正确的方法指定默认空列表/字典/设置/等作为函数arg

为函数指定空字典或列表的正确方法是什么?

def func_a(l=list(), d=dict()):
    pass

def func_b(l=[], d={}):
    pass
Run Code Online (Sandbox Code Playgroud)

python

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

Pandas Groupby:如何使用两个lambda函数?

我现在可以在Pandas中做以下事情,但是我从FutureWarning那里得到一个严厉的手指摇摆:

grpd = df.groupby("rank").agg({
    "mean": np.mean, "meian": np.median, "min": np.min, "max": np.max, 
    "25th percentile": lambda x: np.percentile(x, 25),
    "75th percentile": lambda x: np.percentile(x, 75)
})
Run Code Online (Sandbox Code Playgroud)

以下引发错误,因为我有两个lambda函数:

percentile_25 = lambda x: np.percentile(x, 25)
percentile_75 = lambda x: np.percentile(x, 75)

df = diffs[["User Installs", "rank"]].dropna()
grpd = df.groupby("shopping_rank").agg([
    np.mean, np.median, np.min, np.max, 
    percentile_25, percentile_75
])
Run Code Online (Sandbox Code Playgroud)

抛出:

SpecificationError: Function names must be unique, found multiple named <lambda>
Run Code Online (Sandbox Code Playgroud)

我似乎能够做到这一点的唯一方法(不忽略警告,我应该这样做)是一个精心设计的过程,如下所示

  1. 使用一个lambda函数(第25个百分位数)定义我的DF,以及我需要的所有其他东西(最小值,最大值等)
  2. 重命名cols以摆脱MultiIndex
  3. 创建另一个DF,进行另一个分组,这次是我想要的其他列(第75个百分点)
  4. 再次重命名cols(感谢MultiIndex!)
  5. 加入索引上的原始DF

这里有什么我想念的吗?当然有更好的方法来做我想象的很常见的事情(使用两个不能直接从numpy导入的聚合).

python pandas pandas-groupby

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