我有大型DataFrame与GPS路径和一些属性.路径的一些部分是我需要分析的部分.我想仅将这些部分子集化为新的DataFrame.我可以在当时对一个部分进行子集化,但我们的想法是将它们全部包含在原始索引中.
问题类似于:
import pandas as pd
df = pd.DataFrame({'A':[0,1,2,3,4,5,6,7,8,9],'B':['a','b','c','d','e','f','g','h','i','j']},
index=range(10,20,))
Run Code Online (Sandbox Code Playgroud)
我希望得到类似的东西:
cdf = df.loc[[11:13] & [17:20]] # SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
期望的结果:
A B
11 1 b
12 2 c
13 3 d
17 7 h
18 8 i
19 9 j
Run Code Online (Sandbox Code Playgroud)
我知道这个例子很容易,cdf = df.loc[[11,12,13,17,18,19],:]但在最初的问题中我有数千行和一些条目已被删除,所以列出点不是一个选项.
我有pandas DataFrame.我想根据涉及另外两列的条件从列中获取单个值.我正在寻找column3中的值,这是column1和2中的最大距离.
我构建了一个有效的简单示例:
d = pd.DataFrame({'c1':[.1,3,11.3],'c2':[3,6,.6],'c3':[8,.8,10.9]})
print'data d=\n%s\n' % d
x = float(d.c3[abs(d.c1-d.c2)==max(abs(d.c1-d.c2))].values)
print 'the value of x= \n%s\n' % x
Run Code Online (Sandbox Code Playgroud)
此示例的输出正如我所期望的那样:
c1 c2 c3
0 0.1 3.0 8.0
1 3.0 6.0 0.8
2 11.3 0.6 10.9
the value of x=
10.9
Run Code Online (Sandbox Code Playgroud)
我尝试将完全相同的逻辑应用于我在类中的大型数据帧的原始问题.代码是:
yInit = float(self.DenFrame.Depth[abs(self.DenFrame.Hper-self.DenFrame.Vper)==max(abs(self.DenFrame.Hper-self.DenFrame.Vper))].values)
Run Code Online (Sandbox Code Playgroud)
但是这段代码会产生错误:
...
File "C:\Python27\lib\site-packages\pandas-0.9.0-py2.7-win32.egg\pandas\core\series.py", line 73, in wrapper
return Series(na_op(self.values, other.values),
File "C:\Python27\lib\site-packages\pandas-0.9.0-py2.7-win32.egg\pandas\core\series.py", line 59, in na_op
result[mask] = op(x[mask], y[mask])
TypeError: unsupported operand type(s) for -: 'str' and 'str'
Run Code Online (Sandbox Code Playgroud)
我在这里发现列的类型可能有问题但是深度是类型numpy.float64 …
我想绘制一些频率图。我想要一个带有上标符号的 x 轴,如下所示。此外,我需要带有垂直注释的垂直线,将千赫兹和兆赫兹分开。
import numpy as np
import matplotlib.pyplot as plt
band = np.linspace(0,10**12,100)
y = band
plt.plot(band,y)
plt.xlabel('Frequencies')
plt.vlines(10**3, min(y), max(y),colors = 'black', label = 'kilo Hz')
plt.vlines(10**6, min(y), max(y),colors = 'black', label = 'mega Hz')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我尝试使用股票但不知道如何设置它。我尝试遵循一些示例,但出现了错误,例如AttributeError: 'Figure' object has no attribute 'ticklabel_format'
已经花费了大量时间,并且不知道如何继续。
一般来说,我需要以类似的方式格式化 x 轴,但plt.xscale('log')我想保持线性比例。
我无法弄清楚如何根据多个其他向量的条件创建向量.我有三个向量,如果其他向量上的值符合条件,我需要一个向量的值.作为下面的一个例子,我想从向量中选择值,a如果向量上的值和向量上的b==2值c==0显然是我期望的[2 4]
a = [1 2 3 4 5 6 7 8 9 10];
b = [1 2 1 2 1 2 1 2 1 2];
c = [0 0 0 0 0 1 1 1 1 1]
Run Code Online (Sandbox Code Playgroud)
我想的是:
d = a(b==2) & a(c==0)
Run Code Online (Sandbox Code Playgroud)
但我d = 1 1 1 1 1不确定为什么.这似乎是基本问题,但我可以找到它的解决方案.
我有一个.txt数据,其中第6列和第7列是以下形式的GPS位置:
50;18.5701400N,4;07.7693770E
Run Code Online (Sandbox Code Playgroud)
当我通过read_csv读取它时,我尝试使用转换器将其转换为笛卡尔坐标.我为转换器编写了函数
convertFunc = lambda x : float((x[0:5]+x[6:12]).replace(';','.'))
convert = {6:convertFunc,7:convertFunc}
Run Code Online (Sandbox Code Playgroud)
当我在单个值上使用它时,我的工作方式如下:
convertFunc(myData.Lat[1])
Out [159]: 55.187110250000003
Run Code Online (Sandbox Code Playgroud)
当我尝试在read_csv中使用它时,它不起作用
myData = DataFrame(read_csv('~/data.txt', sep=',' names=['A', 'B', 'C', 'D', 'E', 'Lat', 'Long'],converters=convert))
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
...
convertFunc = lambda x : float((x[0:5] + x[6:12]).replace(';', '.'))
ValueError: invalid literal for float(): DGPS ongitu
Run Code Online (Sandbox Code Playgroud)
我不知道它在哪里出错或者我在转换器中误解了什么?或者也许有人知道以这种形式处理GPS数据的好方法(包)?
(我认为这可能是有些问题,lambda当我想要我的功能应用到专栏中,我有一个错误:TypeError: only length-1 arrays can be converted to Python scalars)
我有64位的ubuntu 12.04新安装.我有python 2.7并安装python 3.3作为python3到目前为止没有问题,但安装是相当新的.当我尝试检查我安装的模块时,help('modules')我有一个错误:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help('modules')
Please wait a moment while I gather a list of all available modules...
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
from gtk import _gtk
** (python:20929): CRITICAL **: pyg_register_boxed: assertion `boxed_type != 0' failed
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: cannot register existing …Run Code Online (Sandbox Code Playgroud)