小编tom*_*z74的帖子

在Python pandas中向现有DataFrame添加新列

我有以下索引的DataFrame与命名列和行不连续数字:

          a         b         c         d
2  0.671399  0.101208 -0.181532  0.241273
3  0.446172 -0.243316  0.051767  1.577318
5  0.614758  0.075793 -0.451460 -0.012493
Run Code Online (Sandbox Code Playgroud)

我想'e'在现有数据框中添加一个新列,并且不希望更改数据框中的任何内容(即,新列始终与DataFrame具有相同的长度).

0   -0.335485
1   -1.166658
2   -0.385571
dtype: float64
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的版本join,append,merge,但我没有得到我想要的结果,只在最错误.如何e在上面的示例中添加列?

python dataframe pandas chained-assignment

887
推荐指数
23
解决办法
182万
查看次数

将类变量指定为类方法参数的默认值

我想在类中构建一个方法,其中包含从此类中获取的默认值参数.一般来说,我会过滤一些数据.在我的班级里面,我有一个方法,通常我传递数据向量.有时我没有矢量,我采用模拟数据.每次我没有传递特定的矢量时,我都希望默认采用模拟数据.我认为它应该是一个简单的构造,我在我的方法定义中说a=self.vector.但由于某种原因,我有一个错误NameError: name 'self' is not defined.简化的结构是:

class baseClass(object):  # This class takes an initial data or simulation
    def __init__(self):
        self.x = 1
        self.y = 2

class extendedClass(baseClass): # This class does some filtering
    def __init__(self):
        baseClass.__init__(self)
        self.z = 5
    def doSomething(self, a=self.z):
        self.z = 3
        self.b = a

if __name__ == '__main__':
    a = extendedClass()
    print a.__dict__
    a.doSomething()
    print a.__dict__
Run Code Online (Sandbox Code Playgroud)

我预期的输出应该是:

{'y': 2, 'x': 1, 'z': 5}
{'y': 2, 'x': 1, 'z': 3, 'b': 5}
Run Code Online (Sandbox Code Playgroud)

我试过默认分配,因为 …

python class variable-assignment

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

xampp MySQL无法启动

我在Windows 7 32位上安装了Xampp.当我尝试在XAMPP控制面板(v3.2.1)中启动MySql时,我有以下消息,并且MySql无法启动.

23:02:03  [mysql]   Problem detected!
23:02:03  [mysql]   Port 3306 in use by ""C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini" MySQL"!
23:02:03  [mysql]   MySQL WILL NOT start without the configured ports free!
23:02:03  [mysql]   You need to uninstall/disable/reconfigure the blocking application
23:02:03  [mysql]   or reconfigure MySQL and the Control Panel to listen on a different port
23:02:03  [mysql]   Attempting to start MySQL service...
Run Code Online (Sandbox Code Playgroud)

这里报告类似的问题,但没有可行的答案.当我尝试禁用MySql安装时,结果是我甚至没有选择尝试运行它.

我是Xampp的新手,不知道在哪里寻找解决问题的方法

我需要用Php运行Apache和MySql.

mysql xampp

40
推荐指数
3
解决办法
33万
查看次数

在python pandas中读取缺少值的文件

我尝试使用pandas.read_csv读取缺少值的.txt.我的数据格式如下:

10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686
Run Code Online (Sandbox Code Playgroud)

数千个样本具有相同的点名称,gps位置和其他读数.我用的是代码:

myData = read_csv('~/data.txt', sep=',', na_values='')
Run Code Online (Sandbox Code Playgroud)

代码错误,因为na_values没有给出NaN或其他指标.列应该具有相同的大小,但我完成不同的长度.

我不知道在na_values之后究竟应该输入什么(尝试了所有不同的东西).谢谢

python pandas

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

从python pandas中的DataFrame中删除特定行

我有一个大的.txt数据格式不正确.我想删除一些行并将其余数据转换为浮点数.我想用'X'或删除行'XX',其余我应该转换为浮点数,数字4;00.1应该转换4.001为该文件看起来像这样的样本:

0,1,10/09/2012,3:01,4;09.1,5,6,7,8,9,10,11
1,-0.581586,11/09/2012,-1:93,0;20.3,739705,,0.892921,5,,6,7
2,XX,10/09/2012,3:04,4;76.0,0.183095,-0.057214,-0.504856,NaN,0.183095,12
3,-0.256051,10/09/2012,9:65,1;54.9,483293,0.504967,0.074442,-1.716287,7,0.504967,0.504967
4,-0.728092,11/09/2012,0:78,1;53.4,232247,4.556,0.328062,1.382914,NaN,4.556,4
5,4,11/09/2012,NaN,NaN,6.0008,NaN,NaN,NaN,6.000800,6.000000,6.000800
6,X,11/09/2012,X,X,5,X,8,2,1,17.000000,33.000000
7,,11/09/2012,,,,,,6.000000,5.000000,2.000000,2.000000
8,4,11/09/2012,7:98,3;04.5,5,6,3,7.000000,3.000000,3.000000,2
9,6,11/09/2012,2:21,4;67.2,5,2,2,7,3,8.000000,4.000000
Run Code Online (Sandbox Code Playgroud)

我把它读到DataFrame并选择行

from pandas import *
from csv import *
fileName = '~/data.txt'
colName = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
df = DataFrame(read_csv(fileName, names=colName))
print df[df['b'].isin(['X','XX',None,'NaN'])].to_string()
Run Code Online (Sandbox Code Playgroud)

最后一行的输出只给我:

>>> print df[df['b'].isin(['X','XX',None,'NaN'])].to_string()
    b           c     d       e         f          g         h   i         j   k   l
a                                                                                   
2  XX  10/09/2012  3:04  4;76.0  0.183095  -0.057214 -0.504856 NaN  0.183095  12 NaN
6 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

python unittest由舍入错误引起的失败

我为几何变换构建了类.当我运行单元测试时,由于我的方法中的操作产生的舍入错误,它会失败.

在我的测试中,我比较了应该返回点(2,2,0)的方法之一的结果,但由于舍入错误它返回(1.9999999999999996,1.9999999999999996,0.0)

Finding files... done.
Importing test modules ... done.

** DEBUG_45 from the method point=(1.9999999999999996, 1.9999999999999996, 0.0)
======================================================================
FAIL: testPointCoord (vectOper.test.TestNearestPoint.TestNearestPoint)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\src\vectOper\test\TestNearestPoint.py", line 14, in testPointCoord
self.assertEqual(pointCoord, (2,2,0), "nearest point failed")
AssertionError: nearest point failed

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)
Run Code Online (Sandbox Code Playgroud)

从计算的角度来看,这是可以接受的,但我不希望我的代码在简单的单元测试中失败.

import unittest
from vectOper.nearestPoint import NearestPoint

class TestNearestPoint(unittest.TestCase):

    def testPointCoord(self):
        nearestPoint = NearestPoint()
        pointCoord = nearestPoint.pointCoord(samplePoint=(2,2,2),lineStart=(0,0,0), lineVect=(1,1,0))
        self.assertEqual(pointCoord, (2,2,0), "nearest point failed")
Run Code Online (Sandbox Code Playgroud)

什么是解决这类问题的正确方法?显然我不能将输出数字向上舍入或将它们转换为整数,因为通常情况并非如此.有没有办法代码单元测试忽略舍入错误?有没有其他方法可以解决问题?

编辑:问题可以通过使用另一个答案self.assertAlmostEqual正确建议解决但问题是我需要测试一个元组的入口.在我尝试做所有建议之后: …

python unit-testing rounding

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

使用 Pydev 的 python 日志记录时出错

我正在使用来自 Aptana 安装的 PyDev 和 Python 3.5。一切都工作正常,直到我决定探索我以前从未使用过的日志模块。我从教程中的新脚本开始:

import logging
logging.warning('Watch out!')  # will print a message to the console
logging.info('I told you so')  # will not print anything
Run Code Online (Sandbox Code Playgroud)

在 Pydev 我有这个错误:

Traceback (most recent call last):
  File     "C:\Users\Tomasz\workspace\basicLogging.py", line 7, in <module>
    logging.warning('Watch out!')  # will print a message to the console
AttributeError: module 'logging' has no attribute 'warning'
Run Code Online (Sandbox Code Playgroud)

我搜索并发现了以下问题:python : installlogging module有类似的问题但没有解决方案。显然问题不在于安装。当我从 CMD 运行完全相同的脚本时,我有正确的输出。目前,Pydev 似乎给我的大多数脚本都带来了错误。如果我回到之前运行良好的代码,现在我有这个:

Traceback (most recent call last):
  File "C:\Users\Tomasz\workspace\piClientFullQt.py", line 15, in <module>
    from …
Run Code Online (Sandbox Code Playgroud)

python aptana logging pydev

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

在Python pandas中将DataFrame添加到Panel

我想创建具有不同数据帧的面板,我尝试编写一个函数来返回此面板.我使用一些已编写的函数createNewDf(i),它根据给定的数值从现有数据返回dataFrame.

def panelCreation():
    dp1 = Panel({})
    for i in range(1,3):
        name = 'X' + str(i)
        name = createNewDf(i)
    dp1.update(name)       # This does not work
    return dp1
Run Code Online (Sandbox Code Playgroud)

我无法找到替代方法的名称 dp1.update(name)

python dataframe pandas

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

Python等同于Matlab的持久性

可能重复:
函数内的静态变量在Python中的等效项是什么?

我尝试编写一个递归函数。迭代向量,并给出一个值,该值取决于当前值和先前值。在Matlab中,我可以persistent在函数内部声明一个变量,并且在调用该函数后将其值存储在内存中,因此该函数的下一次调用将从先前的值开始。

这是我从简单移动平均线开始的内容:

def AvgFilter(x):
    if not firstRun:  # checks if runs for first time, i.e. firstRun is empty
        k = 1        # setup initial variables if run for first time
        prevAvg = 0  # prevAvg - the average calculated during last call
        firstRun = 1 # only for initialisation
    alpha = (k-1)/k  
    avg = alpha * prevAvg + (1 - alpha)*x
    prevAvg = avg
    k = k + 1    
    return avg
Run Code Online (Sandbox Code Playgroud)

我需要k prevAvg firstRun在函数调用之间记住变量。我读到它可以通过装饰器完成,我确实尝试 …

python decorator

4
推荐指数
2
解决办法
1359
查看次数

创建子类表单类返回pandas dataFrame

在我的项目中,我构建了一个以pandas DataFrame为核心的类.数据框中的值取决于某些规范,我用一些代表我想要使用的数据的字母初始化它.我把我的所有函数都放在一个内部创建数据框架,__init__因为我知道这个函数只有一个,并且在初始化之后不需要它们.在我的类在以后的代码中使用后,我也不想访问这个函数.(我不确定这是否是"pythonic"方式).

在使用__str__和plotData()方法构建基本类之后,我想应用一些过滤器并构建一个新类,其中附加列是过滤器.我想这样做,__init__但保留已经完成的一切.换句话说,我不想重写整个__init__只想添加新列到基本数据帧.

以类似的方式,我想在plotData()函数中添加一个额外的图

我的原始代码已经有很多行,但原理与下面列出的代码非常相似.

import pandas as pd
import pylab as pl
class myClass(object):
    def __init__(self, frameType = 'All'):
        def method1():
            myFrame = pd.DataFrame({'c1':[1,2,3],'c2':[4,5,6],'c3':[7,8,9]})
            return myFrame
        def method2():
            myFrame = pd.DataFrame({'c1':[.1,.2,.3],'c2':[.4,.5,.6],'c3':[.7,.8,.9]})
            return myFrame
        def makingChiose(self):
            if self.frameType == 'All':
                variable = method1() + method2() 
            elif self.frameType == 'a':
                variable = method1()
            elif self.frameType == 'b':
                variable = method2()
            else:
                variable =  pd.DataFrame({'c1':[0,0,0],'c2':[0,0,0],'c3':[0,0,0]})
            #print 'FROM __init__ : %s' % variable
            return variable …
Run Code Online (Sandbox Code Playgroud)

python inheritance pandas

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