Python 操作数据帧时出现raise VALUERROR(';系列长度必须匹配才能比较';)
我是一名python初学者,当时正在编写代码来操作数据帧,以聚合位于两个值之间的行。该值是从数据帧本身中的一个值中提取的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非常陌生,所以我不太清楚数据类型如何相互
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']]
然后选择第一个值-getSeries
。如果需要,也可以选择第一行使用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