在我的项目中,我构建了一个以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编写程序,它可以在某种沙箱中运行不受信任的python代码.所以,我需要一种方法来限制不受信任的代码可以分配的内存量.现在我可以通过覆盖沙盒环境中的默认python数据结构来限制range(),list,dictionary和其他的最大长度.
有任何想法吗?
我有这个python代码用于显示一些数字随着时间的推移:
import matplotlib.pyplot as plt
import datetime
import numpy as np
x = np.array([datetime.datetime(2013, 9, i).strftime("%Y-%m-%d") for i in range(1,5)],
dtype='datetime64')
y = np.array([1,-1,7,-3])
plt.plot(x,y)
plt.axhline(linewidth=4, color='r')
plt.show()
Run Code Online (Sandbox Code Playgroud)
生成的图形在x轴上的数字为0.0到3.0:

显示日期而不是这些数字的最简单方法是什么?优选地,格式为%b%d.
我有一个以下dataFrame
mn = pd.DataFrame({'fld1': [2.23, 4.45, 7.87, 9.02, 8.85, 3.32, 5.55],'fld2': [125000, 350000,700000, 800000, 200000, 600000, 500000],'lType': ['typ1','typ2','typ3','typ1','typ3','typ1','typ2'], 'counter': [100,200,300,400,500,600,700]})
Run Code Online (Sandbox Code Playgroud)
映射功能
def getTag(rangeAttribute):
sliceDef = {'tag1': [1, 4], 'tag2': [4, 6], 'tag3': [6, 9],
'tag4': [9, 99]}
for sl in sliceDef.keys():
bounds = sliceDef[sl]
if ((float(rangeAttribute) >= float(bounds[0]))
and (float(rangeAttribute) <= float(bounds[1]))):
return sl
def getTag1(rangeAttribute):
sliceDef = {'100-150': [100000, 150000],
'150-650': [150000, 650000],
'650-5M': [650000, 5000000]}
for sl in sliceDef.keys():
bounds = sliceDef[sl]
if ((float(rangeAttribute) >= float(bounds[0]))
and (float(rangeAttribute) …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Anaconda的Spyder,我正在尝试将包含float类型的数组转换为int类型:
x = np.array([1, 2, 2.5])
x.astype(int)
print x
Run Code Online (Sandbox Code Playgroud)
结果仍未改变:
[1. 2. 2.5]
Run Code Online (Sandbox Code Playgroud)
思考?
我想在Python中的函数参数中传递一个公式,其中公式是其他函数参数的组合.原则上,这将是这样的:
myfunction(x=2,y=2,z=1,formula="x+2*y/z")
6
Run Code Online (Sandbox Code Playgroud)
或更具体:
def myformula(x,y,z,formula):
return formula(x,y,z)
Run Code Online (Sandbox Code Playgroud)
这将允许用户根据x,y和z选择任何算术表达式,而无需创建新函数.
我预见的一种可能性是在函数内的代码行中转换字符串.在Python中有什么可能吗?还是其他任何想法?谢谢
我一直在尝试使用pandas.to_datetime在我的代码库中的时间戳格式之间进行转换,但是当提供字符串输入时,有时pandas似乎无法正确提取 UTC 偏移量:
这是一个正确的转换,UTC 偏移量被正确捕获,反映在 Timestamp 对象中:
In[76]: pd.to_datetime('2014-04-09T15:29:59.999993-0500', utc=True)
Out[76]: Timestamp('2014-04-09 20:29:59.999993+0000', tz='UTC')
Run Code Online (Sandbox Code Playgroud)
这是一个替代字符串表示,它仍然是有效的ISO 8601日期时间字符串,但 UTC 偏移量-0500似乎被忽略:
In[77]: pd.to_datetime('2014-04-09T152959.999993-0500', utc=True)
Out[77]: Timestamp('2014-04-09 15:29:59.999993+0000', tz='UTC')
Run Code Online (Sandbox Code Playgroud)
另一方面,dateutil包可以很好地处理事情:
In[78]: dateutil.parser.parse('2014-04-09T152959.999993-0500')
Out[78]: datetime.datetime(2014, 4, 9, 15, 29, 59, 999993, tzinfo=tzoffset(None, -18000))
Run Code Online (Sandbox Code Playgroud)
我当然可以使用,dateutil但是否有某种原因pandas.to_datetime不能正确处理不同的 ISO 日期时间字符串。我在这里做错了吗?
使用 Python 2.7.6 和 pandas 0.13.1
如何在python中删除以特定字符开头的单词?
例如。
string = 'Hello all please help #me'
Run Code Online (Sandbox Code Playgroud)
我想删除以 #
我想要的结果是:
Hello all please help
Run Code Online (Sandbox Code Playgroud) 我试图通过fuzzywuzzy.fuzzy.partial_ratio()> = 85,在大熊猫DF所有行比较每行写在结果列表的每一行.
in: df = pd.DataFrame( {'id':[1, 2, 3, 4, 5, 6], 'name':['dog', 'cat', 'mad cat', 'good dog', 'bad dog', 'chicken']})
Run Code Online (Sandbox Code Playgroud)
使用pandas函数与fuzzywuzzy库得到结果:
out:
id name match_id_list
1 dog [4, 5]
2 cat [3, ]
3 mad cat [2, ]
4 good dog [1, 5]
5 bad dog [1, 4]
6 chicken []
Run Code Online (Sandbox Code Playgroud)
但我不明白怎么弄这个.
python ×10
pandas ×4
numpy ×2
arrays ×1
datetime ×1
function ×1
fuzzywuzzy ×1
gis ×1
inheritance ×1
map ×1
matplotlib ×1
python-2.7 ×1
types ×1