我有两个问题
第一个是关于计数,第二个是擦除
我的数据集如下所示
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)
我尝试分组或其他一些东西,但还没有赶上..
答案 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)