【发布时间】:2017-05-12 20:02:36
【问题描述】:
我有一个 Pandas 数据框,并且我只想在该客户编号出现超过设定的次数时才返回该数据框。
以下是 DataFrame 的示例:
114 2017-04-26 1 7507 34 13
115 2017-04-26 3 77314 41 14
116 2017-04-27 7 4525 190 315
117 2017-04-27 7 5525 67 94
118 2017-04-27 1 6525 43 378
119 2017-04-27 3 7415 38 27
120 2017-04-27 2 7613 47 10
121 2017-04-27 2 77314 9 3
122 2017-04-28 1 227 17 4
123 2017-04-28 8 4525 205 341
124 2017-04-28 1 7415 31 20
125 2017-04-28 2 77314 8 2
如果该客户出现超过 5 次,请使用以下代码:
print(zip_data_df['Customers'].value_counts()>5)
7415 True
4525 True
5525 True
77314 True
6525 True
4111 True
227 True
206 False
7507 False
7613 False
4108 False
3046 False
2605 False
4139 False
4119 False
现在我预计如果我这样做了:
print(zip_data_df[zip_data_df['Customers'].value_counts()>5])
它会向我显示出现超过 5 次的客户的整个 DataFrame,但我收到了一个布尔错误。我现在意识到为什么它给了我一个错误:一个 DataFrame 只是告诉我该客户编号是否出现超过 5 次,而另一个每次出现该客户编号时都向我显示。它们的长度不匹配。但是如何获取它,以便数据框仅返回该客户出现超过 5 次的记录?
我确信我忽略了一些简单的答案,但我很感激你能得到我的任何帮助。
【问题讨论】:
-
我的想法是我需要添加一个列,该列的 custcount 类似于我认为 Abe 建议的,所以我尝试了这个: zip_data_df['cust_counts'] = zip_data_df['Customers'].value_counts( ) 但它只是给了我所有 cust_counts 的“NaN”。