我有一个非常简单的设置:pandas数据帧df中的市场数据(滴答)如下:
index period ask bid
00:00:00.126 42125 112.118 112.117
00:00:00.228 42125 112.120 112.117
00:00:00.329 42125 112.121 112.120
00:00:00.380 42125 112.123 112.120
00:00:00.432 42125 112.124 112.121
00:00:00.535 41126 112.124 112.121
00:00:00.586 41126 112.122 112.121
00:00:00.687 41126 112.124 112.121
00:00:01.198 41126 112.124 112.120
00:00:01.737 41126 112.124 112.121
00:00:02.243 41126 112.123 112.121
Run Code Online (Sandbox Code Playgroud)
现在我使用pandas.groupy来聚合句点
g=df.groupby('period')
Run Code Online (Sandbox Code Playgroud)
按期间很容易获得最低和最高价格,例如
import numpy as np
res=g.agg({'ask': [np.amax, np.amin]})
Run Code Online (Sandbox Code Playgroud)
这也相当快.现在,我还想要每个时期的第一个和最后一个价格.这就是麻烦开始的地方.当然,我可以这样做:
res=g.agg({'ask': lambda x: x[0]})
Run Code Online (Sandbox Code Playgroud)
它基本上可以工作,但是对于大型数据集来说它非常慢.基本上,Python函数调用的调用开销很大.
有没有人知道类似于np.amax的numpy函数会返回组的第一个或最后一个元素?我找不到一个.iloc [0]没有这个技巧,因为它是一个对象的方法,因此,我不能将它作为函数传递给g.agg,因为我在这个阶段没有对象(这就是lambda是必需的).
现在,我并不懒惰,我尝试使用cython为自己做这个.
import numpy as np
cimport numpy as np
cpdef double first(np.ndarray array_series): …Run Code Online (Sandbox Code Playgroud) 我搜索并发现了许多类似的问题和文章,但没有一个能让我解决这个问题.
我使用Python 3.5.0(V3.5.0:374f501f4567,2015年9月13日,2点27分37秒)[MSC v.1900 64位(AMD64)]在Windows 10.
我有一个简单的文本文件,它以UTF-8编码为Windows,如下所示:

我想要做的就是将此文件的内容读入Python字符串并在标准控制台中正确显示.
这是第一次失败的尝试:
file_name=r'c:\temp\encoding_test.txt'
fh=open(file_name,'r')
f_str=fh.read()
fh.close()
print(f_str)
Run Code Online (Sandbox Code Playgroud)
print语句引发了一个异常:
'charmap'编解码器无法对位置100中的字符'\ u201e'进行编码:字符映射到未定义
使用调试器,f_str包含以下内容:
'我希望在将此文件读入Python后正确显示以下字符:\n \nÃ"Ã-ÜäÃüÃÃÃ?\n"
这对我来说已经非常令人费解了.Python 3不是在任何地方都使用UTF-8作为默认值吗?什么其他编码可以工作?我尝试了所有的Notepad ++支持,没有用.
好吧,有点复杂,我试过:
import codecs
file_name=r'c:\temp\encoding_test.txt'
my_encoding='utf-8'
fh=codecs.open(file_name,'r',encoding=my_encoding)
f_str=fh.read().encode(my_encoding)
fh.close()
print(f_str)
Run Code Online (Sandbox Code Playgroud)
这至少不会引发异常,而是收益率
b'我希望在将此文件读入Python后正确显示以下字符:\ r \n\r \n\xc3\x84\xc3\x96\xc3\x9c\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\r \n'我
这对我来说完全是一团糟.这里有人可以帮我解决这个问题吗?