[英]How do I make bins of equal number of observations in a pandas dataframe?
[英]How do I make the key values that equal number argument appear
我想返回與數字參數一樣多的重復鍵,但它不起作用
def duplicate_count(text, number):
count = {}
sen = str(text)
for spot in sen.lower():
count.setdefault(spot,0)
count[spot] = count[spot] +1
return count.keys == number
您可以將返回值更改為:
return [i for i in count if count[i] >= number]
此列表推導創建一個列表,其中包含值大於或等於number
counts
鍵。
所以完整的方法將如下所示:
def duplicate_count(text, number):
count = {}
sen = str(text)
for spot in sen.lower():
count.setdefault(spot,0)
count[spot] = count[spot] +1
return [i for i in count if count[i] >= number]
duplicate_count('aaaassddd', 3) # returns ['a', 'd']
我希望你需要這樣的東西:
def duplicate_count(text, number):
a = str(text).lower()
return {i:a.count(i) for i in set(a) if a.count(i)==number}
duplicate_count("hhhaaafggggg",3)
{'h': 3, 'a': 3}
你可以使用collections.Counter
,例如
[k for k, v in ct.Counter(str(text).lower()).items() if v >= n]
碼
更一般地說,您可以使用標志計算大寫和小寫字符串:
import collections as ct
def replicates(text, n=2, case_sensitive=False):
"""Return strings with counts >= n."""
s = str(text) if case_sensitive else str(text).lower()
return [k for k, v in ct.Counter(s).items() if v >= n]
假設您的意思是兩個以上的重復值,我們使用術語“ 重復” 。
演示
replicates("aaaaabbcddd", 3)
# ['a', 'd']
replicates("AAaAabbcDdd", 3, True)
# ['A']
經典的解決方案是使用collections.Counter
,然后使用列表推導進行過濾。 您還可以使用第三方NumPy,它通過矢量化操作更有效地執行過濾部分:
import numpy as np
def replicates(text, n=3):
values, counts = np.unique(list(text), return_counts=True)
return values[counts==n]
res = replicates('aaaeabbecddde')
print(res)
array(['d', 'e'], dtype='<U1')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.