【发布时间】:2019-11-19 09:46:17
【问题描述】:
我需要遍历数据框并检查特定列的奇数行是否等于给定变量(偶数行相同)。
这是我的代码:
mydf = pd.read_excel(test.xlsx, header=0, index= False)
mydf = mydf.sort_values(by='Time')
if ((mydf['Door Name'].iloc[::2]=='RDC_OUT-1') & (mydf['Door Name'].iloc[1::2]=='RDC_IN-1')):
for i in range (l):
mydf['diff'] = mydf['Times'].iloc[1::2].to_numpy() - mydf['Times'].iloc[::2]
Total = mydf['diff'].sum()
print('Total: ',Total)
但是当我运行它时,我得到了这个错误:
if ((mydf['Door Name'].iloc[::2]=='RDC_OUT-1') & (mydf['Door Name'].iloc[1::2]=='RDC_IN-1')):
File "C:\Users\khoul\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py", line 1478, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这是我的数据框:
Door name Time Last Name First Name
RDC_IN-1 05/08/2019 15:23:00 aa bb
RDC_OUT-1 05/08/2019 12:39:00 aa bb
RDC_IN-1 05/08/2019 12:13:00 aa bb
RDC_OUT-1 05/08/2019 09:10:00 aa bb
不知道为什么不接受!
【问题讨论】:
-
你可以添加一些数据样本,minimal, complete, and verifiable example 吗?
-
mydf.loc[::2,'Door Name']=='RDC_OUT-1'可以正常工作。但是对于mydf['Times'].iloc[1::2].to_numpy() - mydf['Times'].iloc[::2],您需要相同大小的系列。你确定不同的条件会得到真正的结果吗? -
@splash58 是的,我做了一个例子,它的长度是偶数
-
@splash58 即使有这个
mydf.loc[::2,'Door Name']=='RDC_OUT-1'它也不起作用,同样的错误 -
(mydf.loc[::2,'Door Name']=='RDC_OUT-1').all() - 仅表示偶数行都包含 ['Door Name']== 'RDC_OUT-1'。但不选择任何东西
标签: python-3.x pandas logical-operators