2017-01-25 98 views
1

基于值的数量,我有以下数据框:删除数据框中行大熊猫在表

N numbers 
n1 1,2,3 
n2 4,6,2 
n3 1 
n4 2,5 
n5 6 

我需要删除其中numbers只有一个值的行。什么是最有效的方式来做到这一点?

+0

@约翰高尔特 所有的号码都不同 – Ekaterina

回答

4

下面是一种方法,通过拆分字符串并找到列表的len

In [226]: df 
Out[226]: 
    N numbers 
0 n1 1,2,3 
1 n2 4,6,2 
2 n3  1 
3 n4  2,5 
4 n5  6 

In [227]: df[df.numbers.str.split(',').apply(len) > 1] 
Out[227]: 
    N numbers 
0 n1 1,2,3 
1 n2 4,6,2 
3 n4  2,5 

编辑:作为Nickil Maveli指出的那样,你可以使用str.len(),而不是apply(len)

或者,如果你的数据组织使得多个号码将有,逗号,那么你就可以

In [229]: df[df.numbers.str.contains(',')] 
Out[229]: 
    N numbers 
0 n1 1,2,3 
1 n2 4,6,2 
3 n4  2,5 
+0

而不是'应用(LEN)','str.len()'会检查元素的数量更快的量化方式。 –

+0

确实如此,但以前在不同的用例中,很少有字符串方法不会更快。感谢这一点,将更新。 – Zero

1

您可以直接计算逗号。这使得有机会调整所需数量的物品。

df[df.numbers.str.count(',') > 0] 

    N numbers 
0 n1 1,2,3 
1 n2 4,6,2 
3 n4  2,5