Python 如果每个国家/地区代码的计数小于5,则需要警告消息
如果某个国家/地区代码的计数或频率小于5,我将尝试获取警告或打印消息Python 如果每个国家/地区代码的计数小于5,则需要警告消息,python,loops,pandas,dataframe,Python,Loops,Pandas,Dataframe,如果某个国家/地区代码的计数或频率小于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-N
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 )
chars=('BE'、'FR'、'NL')
检查_string=OutputData['QuoteID']
对于char中的char:
计数=检查字符串。计数(字符)
如果计数小于5:
打印('计数小于5)
预期结果为“警告“BE类”记录少于5条”
OutputData
-数据集名称QuoteID
-变量名
1500759-BE
等值是变量值,必须计算“BE”、“FR”和“NL”的频率或计数,如果计数小于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
非常感谢您提前您可以使用Python的
集合
模块提供的计数器来计算列表中元素的出现次数。
此外,您可以通过拆分所有行并去掉每行的最后两个元素(即国家代码),提取示例数据中给定的国家代码
总而言之,我建议这样做:
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))
从集合导入计数器
数据=“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:]表示数据中的l.splitlines()]
c=计数器(代码)
对于c.项()中的k,v:
如果v<5:
打印({}少于5项。格式(k))
当您使用python-2.7
标记问题时,您需要记住将我提供的Python3代码转换为Python2等效代码。也就是说,您需要使用print output
而不是print(output)
,而。items()
将变成。iteritems()
您可以使用Python的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))
从集合导入计数器
数据=“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:]表示数据中的l.splitlines()]
c=计数器(代码)
对于c.项()中的k,v:
如果v<5:
打印({}少于5项。格式(k))
当您使用python-2.7
标记问题时,您需要记住将我提供的Python3代码转换为Python2等效代码。也就是说,您需要使用print output
而不是print(output)
,并且。items()
将变成。iteritems()
QuoteID的类型是什么如果它的类型是string,那么它工作正常
alist = "1500759-BE1500759-BE1500759-BE1500759-BE1605101-FR1605101-FR1605101-FR1605119-FR1605119-FR1605119-FR1605119-FR1605119-FR1600896-NL1600896-NL1600896-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898-NL"
chars=('BE','FR','NL')
for char in chars:
count = alist.count(char)
if count < 5:
print ('count is less than 5' )
print char
print "\n"
alist=“1500759-BE1500759-BE1500759-BE1500759-BE1605101-FR1605101-FR1605101-FR1605119-FR1605119-FR1605119-FR1605119-FR1605119-FR160896-NL1600896-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898”
字符=('BE'、'FR'、'NL')
对于char中的char:
count=alist.count(字符)
如果计数小于5:
打印('计数小于5')
打印字符
打印“\n”
如果对我来说可以正常工作什么是QuoteID的类型如果它的类型是string,那么它可以正常工作
alist = "1500759-BE1500759-BE1500759-BE1500759-BE1605101-FR1605101-FR1605101-FR1605119-FR1605119-FR1605119-FR1605119-FR1605119-FR1600896-NL1600896-NL1600896-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898-NL"
chars=('BE','FR','NL')
for char in chars:
count = alist.count(char)
if count < 5:
print ('count is less than 5' )
print char
print "\n"
alist=“1500759-BE1500759-BE1500759-BE1500759-BE1605101-FR1605101-FR1605101-FR1605119-FR1605119-FR1605119-FR1605119-FR1605119-FR160896-NL1600896-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898-NL1600898”
字符=('BE'、'FR'、'NL')
对于char中的char:
count=alist.count(字符)
如果计数小于5:
打印('计数小于5')
打印字符
打印“\n”
如果适用于我您可以使用从每个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
您可以使用从每个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
那么你想检查身份证和国家代码?您能提供一个给定输入的所需输出的示例片段吗?从你在问题开始时说了10次,在问题结束时说了5次,你想检查出现的次数是否少于5次或少于10次。您提供的代码的实际问题是什么?那么您想同时检查ID和国家代码吗?您能提供一个给定输入的所需输出的示例片段吗?从你在问题开始时说了10次,在问题结束时说了5次,你想检查出现的次数是否少于5次或少于10次。您提供的代码的实际问题是什么?