我有一个数据框,其中一列(uid)有7个数字或10个数字。
我写了一个正则表达式来识别7或10个数字(多亏了stackoverflow中一个非常类似的问题)。这些在文本文件上似乎工作得很好。
no_7 = re.compile('(?<![0-9])[0-9]{7}(?![0-9])')
no_9 = re.compile('(?<![0-9])[0-9]{9}(?![0-9])')
再次感谢stackoverflow,我写了以下内容。
如果列由7个数字组成,则值将复制到倒数第二列。
df['column8']=df['UID'].apply(lambda x: x if(x == re.findall(no_7, x)) else 'NaN')
如果该列有10个数字,则该列将复制到最后一列
df['column9']=df['UID'].apply(lambda x: X if(x == re.findall(no_9, x)) else 'NaN')
在调试这个问题时,我发现正则表达式永远无法读取以数字作为数字的列。
regex投诉:
typeerror:应为字符串或类似字节的对象
我已尝试将列“uid”pd设置为\u numeric
我已尝试设置列“uid”df[“uid”]。astype(int)
我已尝试设置列“uid”df[“uid”].apply(np.int64)
所有这些都假设问题在于列的格式不正确,我认为现在已经不是了。
1条答案
按热度按时间drkbr07n1#
你显然在使用
int
在你的栏中键入你需要的信息str
应用字符串操作。您可以使用以下方法进行转换:然而,可能有更好的方法来做你想做的事情,请根据要求改进你的问题,以获得更好的回答。