Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 操作数据帧时出现raise VALUERROR(';系列长度必须匹配才能比较';)_Python_Pandas - Fatal编程技术网

Python 操作数据帧时出现raise VALUERROR(';系列长度必须匹配才能比较';)

Python 操作数据帧时出现raise VALUERROR(';系列长度必须匹配才能比较';),python,pandas,Python,Pandas,我是一名python初学者,当时正在编写代码来操作数据帧,以聚合位于两个值之间的行。该值是从数据帧本身中的一个值中提取的 a = df_gb1.loc[0,['TimeStamp']] 我使用a和a+0.4作为两个边界来获取所有行 df_gb1[df_gb1['TimeStamp'].between(a-0,a+0.4, inclusive=True)] 我不知道有什么更好的方法来实现这一点,但它仍然给了我一个错误: 正如我之前所说,我对python非常陌生,所以我不太清楚数据类型如何相互

我是一名python初学者,当时正在编写代码来操作数据帧,以聚合位于两个值之间的行。该值是从数据帧本身中的一个值中提取的

a = df_gb1.loc[0,['TimeStamp']]
我使用a和a+0.4作为两个边界来获取所有行

df_gb1[df_gb1['TimeStamp'].between(a-0,a+0.4, inclusive=True)]
我不知道有什么更好的方法来实现这一点,但它仍然给了我一个错误:

正如我之前所说,我对python非常陌生,所以我不太清楚数据类型如何相互作用。似乎
a
也是一个系列


如何实现我要做的事情?

我认为您需要删除
[]
仅用于返回标量
a
,否则输出为
系列

df_gb1 = pd.DataFrame({'TimeStamp':[3,3.1,5,7.1,3.4],
                   'a':[4,5,6,7,8]})

print (df_gb1)
   TimeStamp  a
0        3.0  4
1        3.1  5
2        5.0  6
3        7.1  7
4        3.4  8

a = df_gb1.loc[0,'TimeStamp']
print (a)
3.0

print (df_gb1[df_gb1['TimeStamp'].between(a-0,a+0.4, inclusive=True)])
   TimeStamp  a
0        3.0  4
1        3.1  5
4        3.4  8


您可以添加具有所需输出的数据样本吗?但似乎首先需要删除
[]
以返回标量
a=df_gb1.loc[0,'TimeStamp']
,然后
a
datetime
数值
?如果是datetime,为什么要添加
+0.4
?@jezrael所以,
'TimeStamp'
只是一个float64列。它实际上不是什么特殊类型的,它起作用了!我试图了解
[]
以何种方式更改了返回的数据类型?这与
a=df_gb1[['TimeStamp']]相同。loc[0]
-首先按子集选择一列数据帧,然后返回一列
df_gb1['TimeStamp']]
然后选择第一个值-get
Series
。如果需要,也可以选择第一行使用
a=df_gb1[['TimeStamp','a']]。loc[0]
但是如果需要标量使用-
loc['index_value','column_name']
我又卡住了。我想你会有主意的,但是我要把
'TimeStamp'
的第一个值取为
a
,然后把所有行取到
a+0.4
。现在,我正试图访问上一条语句中最后一行后面的
'TimeStamp'
的值
df_gb1.loc[a.tail(1.index+1,'TimeStamp']
,但我现在得到了一个系列类型值!不管怎样,我使用了
nextIndex=a.index[a.index.size-1]+1
print (df_gb1.loc[0,['TimeStamp']])
TimeStamp    3.0
Name: 0, dtype: float64