如果特定国家/地区代码的计数或频率小于5,我会尝试收到警告或打印消息。
QuoteID
1500759-BE
1500759-BE
1500759-BE
1500759-BE
1605101-FR
1605101-FR
1605101-FR
1605119-FR
1605119-FR
1605119-FR
1605119-FR
1605119-FR
1600896-NL
1600896-NL
1600896-NL
1600898-NL
1600898-NL
1600898-NL
1600898-NL
1600898-NL
1600898-NL
尝试以下代码
chars=('BE','FR','NL')
check_string=OutputData['QuoteID']
for char in chars:
count = check_string.count(char)
if count < 5:
print ('count is less than 5 )
预期结果是 - “警告”类别BE'少于5条记录“
OutputData
- 数据集名称
QuoteID
- 变量名称
1500759-BE
之类的值是变量中的值,“BE”,“FR”和“NL”的频率或计数必须计算,如果count小于5,则需要警告消息。
非常感谢提前
答案 0 :(得分:0)
您可以使用Python Counter
模块提供的collections
来计算列表中元素的出现次数。
此外,您可以通过拆分所有行并删除每行的最后两个元素(即国家/地区代码)来提取样本数据中给出的国家/地区代码。
总而言之,我会建议这样的事情:
from collections import Counter
data = """1500759-BE
1500759-BE
1500759-BE
1500759-BE
1605101-FR
1605101-FR
1605101-FR
1605119-FR
1605119-FR
1605119-FR
1605119-FR
1605119-FR
1600896-NL
1600896-NL
1600896-NL
1600898-NL
1600898-NL
1600898-NL
1600898-NL
1600898-NL
1600898-NL
"""
codes = [l[-2:] for l in data.splitlines()]
c = Counter(codes)
for k,v in c.items():
if v < 5:
print('less then 5 items for {}'.format(k))
当您使用python-2.7
标记问题时,您需要记住将我提供的Python3代码转换为Python2等效代码。也就是说,您需要使用print output
代替print(output)
而.items()
将成为.iteritems()
。
答案 1 :(得分:0)
您可以使用str.extract
从每个QuoteID
字符串中提取国家/地区代码,如下所示:
In [16]: df['CountryCode'] = df['QuoteID'].str.extract('(?P<letter>BE|FR|NL)', expand=True)
In [17]: df
Out[17]:
QuoteID CountryCode
0 1500759-BE BE
1 1500759-BE BE
2 1500759-BE BE
3 1500759-BE BE
4 1605101-FR FR
5 1605101-FR FR
6 1605101-FR FR
7 1605119-FR FR
8 1605119-FR FR
9 1605119-FR FR
10 1605119-FR FR
11 1605119-FR FR
12 1600896-NL NL
13 1600896-NL NL
14 1600896-NL NL
15 1600898-NL NL
16 1600898-NL NL
17 1600898-NL NL
18 1600898-NL NL
19 1600898-NL NL
20 1600898-NL NL
通过使用value_counts
计算唯一值的计数,您可以通过调用series
后跟to_dict()
将list-comprehension
对象转换为字典,以获得期望的结果。
In [18]: ["count of %s is %d" % (key, value) if value > 5 else \
"WARN!: count of category %s is less than 5" % (key) \
for key, value in df['CountryCode'].value_counts().to_dict().items()]
Out[18]:
['WARN!: count of category BE is less than 5',
'count of NL is 9',
'count of FR is 8']