在两列

时间:2017-06-21 17:46:32

标签: python pandas

我有一个数据框,我想根据我的两个列上的条件删除行。

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')

0 个答案:

没有答案