我有以下索引的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
在上面的示例中添加列?
我想在类中构建一个方法,其中包含从此类中获取的默认值参数.一般来说,我会过滤一些数据.在我的班级里面,我有一个方法,通常我传递数据向量.有时我没有矢量,我采用模拟数据.每次我没有传递特定的矢量时,我都希望默认采用模拟数据.我认为它应该是一个简单的构造,我在我的方法定义中说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)
我试过默认分配,因为 …
我在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.
我尝试使用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之后究竟应该输入什么(尝试了所有不同的东西).谢谢
我有一个大的.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) 我为几何变换构建了类.当我运行单元测试时,由于我的方法中的操作产生的舍入错误,它会失败.
在我的测试中,我比较了应该返回点(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
正确建议解决但问题是我需要测试一个元组的入口.在我尝试做所有建议之后: …
我正在使用来自 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) 我想创建具有不同数据帧的面板,我尝试编写一个函数来返回此面板.我使用一些已编写的函数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中的等效项是什么?
我尝试编写一个递归函数。迭代向量,并给出一个值,该值取决于当前值和先前值。在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
在函数调用之间记住变量。我读到它可以通过装饰器完成,我确实尝试 …
在我的项目中,我构建了一个以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)