我有一个Dataframe
,只有一列,数字范围为1到10000000000。
df1 =
165437890
2321434256
324334567
4326457
243567869
234567843
......
7654356785432
7654324567543
我想要一个结果Dataframe
,它只有9位数字的数字,并且这些数字彼此不同,这可能吗?我对如何开始一无所知
OBS: 1)我需要过滤出重复数字的数字
例如:
122234543
从我的DataFrame
中消失,因为它的数字2
重复了3次,数字4
和3
重复了2次>
答案 0 :(得分:2)
def is_good(num):
numstr = list(str(num))
if len(numstr) == 9 and len(set(numstr))==9:
return True
return False
df1[df.apply(is_good)]
答案 1 :(得分:2)
flt = (df.Numbers >= 100000000) & (df.Numbers < 1000000000)
df = pd.DataFrame(df[flt]['Numbers'].unique())
Numbers
是带有您的数字的列名。
数字本身彼此不同的数字的解决方案:
df.Numbers = df.Numbers.astype('str')
df = df[df.Numbers.str.match(r'^(?!.*(.).*\1)[0-9]{9}$')]
或基于Igor答案的另一种解决方案:
def has_unique_9digits(n):
s = str(n)
return len(s) == len(set(s)) == 9
df = df[df.Numbers.apply(has_unique_9digits)]