pandas计算列中相同元素的数量,如果数量很小则擦除

时间:2014-03-29 06:20:28

标签: python count pandas

我有两个问题

第一个是关于计数,第二个是擦除

我的数据集如下所示

X = pd.read_table(dstore, sep=',', warn_bad_lines=True, error_bad_lines=True)
X.sort(['Chain_key'], ascending=[True], inplace=True)


       IRI_KEY  OU    EST_ACV       Market_Name  Open  Clsd  Chain_key
230    229030  GR   6.619999    SEATTLE/TACOMA  1123  9998          1
264    231588  GR   5.286999    SEATTLE/TACOMA   960  9998          1
291    233708  GR   5.556000    SEATTLE/TACOMA   607  9998          1 
1083   288392  GR   5.556000    SEATTLE/TACOMA   902  1400          1
167    223660  GR   5.825996    SEATTLE/TACOMA  1123  9998          1
1128   292476  GR  12.683000       LOS ANGELES  1048  9998          2
451    243939  GR  15.306000  WEST TEX/NEW MEX  1196  9998          2
980    281109  GR  15.800990       PORTLAND,OR   435  9998          2
945    278738  GR   9.685997       LOS ANGELES   435  9998          2
1473   656089  GR  14.738000       PHOENIX, AZ  1192  9998          2
1329   648019  GR  13.397990       PHOENIX, AZ   902  9998          3
999    283190  GR  19.213990        SACRAMENTO  1059  1450          3
207    227169  GR  18.780990  WEST TEX/NEW MEX  1075  9998          3
1026   285252  GR  31.476000  WEST TEX/NEW MEX   659  9998          4
1231   535552  GR  22.150990           SPOKANE  1145  9998          4
455    244163  GR  19.213990       PORTLAND,OR   435  1424          4
328    236100  GR  19.120000  WEST TEX/NEW MEX   493  9998          5
1228   535326  GR  15.429990       PHOENIX, AZ  1190  9998          6
436    242841  GR  20.472990       PORTLAND,OR  1285  9998          6

然后我想像这样计算Chain_key列的相同元素的数量

1:5 2:5 3:3 4:3 5:1 ...

如果他们的chain_key具有少量相同的元素,我该如何擦除该行 例如,擦除小于2,则在上述情况下,应删除chain_key 5 因为他们只有1(5:1)

我尝试分组或其他一些东西,但还没有赶上..

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找尺寸:

In [11]: df.groupby('Chain_key').size()
Out[11]:
Chain_key
1            5
2            5
3            3
4            3
5            1
6            2
dtype: int64

要删除组中少于2的行,请使用filter:

In [12]: df.groupby('Chain_key').filter(lambda x: len(x) >= 2)