我使用一个过滤器来检查数据帧中的条件,以便标记它们
filtering = (dfsamen.shift(0).moving=='movingToclose') & (more condtions)
dffilter = pd.Dataframe(data=filtering, columns = ['filter'])
dffilter['DateTime'] = dfsamen['DateTime']
输出:
过滤
4 False
5 False
6 True
7 True
DF滤波器
4 False 2018-06-03 06:33:38.593
5 False 2018-06-03 06:33:39.197
6 True 2018-06-03 06:33:40.597
7 True 2018-06-03 06:33:41.800
但后来我用相同的代码和不同的条件,它不工作
filtering2 = (dfsamen.shift(0).Input5==1) | (more conditions)
dffilter2 = pd.DataFrame(data=filtering2, columns=['filter2'])
dffilter2['DateTime'] = dfsamen['DateTime']
输出:
过滤器2
4 False
5 True
6 True
7 True
dffilter2(添加日期时间之前)
Empty DataFrame
Columns: [filter2]
Index: []
dffilter2(带日期时间)
4 NaN 2018-06-03 06:33:38.593
5 NaN 2018-06-03 06:33:39.197
6 NaN 2018-06-03 06:33:40.597
7 NaN 2018-06-03 06:33:41.800
那么,当我将数据添加到列中时,为什么我的数据在第二个过滤器中会消失呢?即使数据存在于filtering2
中
问题是您的
DataFrame
构造函数,因为它是默认创建的RangeIndex
,所以两个数据帧中可能有不同的索引,数据没有对齐,并且您会得到具有不同索引值的行的NaNs列解决方案是将值转换为numpy数组:
样本:
或者使用^{} 将
Series
转换为具有一列的数据帧:相关问题 更多 >
编程相关推荐