我有一个数据框,我想根据我的两个列上的条件删除行。
indexFZeroAmount = df[(df['F'] == 0.)].index
print indexFZeroAmount
这个数组的长度是4468。
indexTZeroAmount = df[(df['T'] == 0.)].index
print indexTZeroAmount
这个数组的长度是4172。
indexZeroAmount = df[((df['T'] == 0.) | (df['F'] == 0.))].index
print indexZeroAmount
这个数组的长度是4172.为什么??
这是我的输出:
Int64Index([ 173, 232, 1097, 2129, 2610, 3372, 3384, 3431, 3707, 3740,
...
1490233, 1490278, 1490407, 1490427, 1492461, 1492467, 1492677, 1494529, 1494724, 1494888], dtype='int64', length=4468)
Int64Index([ 173, 232, 1097, 2129, 2610, 3384, 3431, 3707, 4314, 4323,
...
1490130, 1490232, 1490233, 1490278, 1490427, 1492461, 1492467, 1492677, 1494529, 1494888], dtype='int64', length=4172)
Int64Index([ 173, 232, 1097, 2129, 2610, 3384, 3431, 3707, 4314, 4323,
...
1490130, 1490232, 1490233, 1490278, 1490427, 1492461, 1492467, 1492677, 1494529, 1494888], dtype='int64', length=4172)
似乎“或”条件无法正常工作。
修改 使用较小的数据集,它可以正常工作:
df = pd.DataFrame(data={'count':[1, -1, 2, -2, 3, -3],'x':[1,2,3,-1,-2,-3]})
print df[((df['x'] == 3)|(df['count'] == 1))].index
print df[df['count'] == 1].index
print df[df['x'] == 3].index
输出:
Int64Index([0, 2], dtype='int64')
Int64Index([0], dtype='int64')
Int64Index([2], dtype='int64')