如何从数据框中的值中删除非字母?我只设法全部转换为小写
def doubleAwardList(self):
dfwinList = pd.DataFrame()
dfloseList = pd.DataFrame()
dfwonandLost = pd.DataFrame()
#self.dfWIN... and self.dfLOSE... is just the function used to call the files chosen by user
groupby_name= self.dfWIN.groupby("name")
groupby_nameList= self.dfLOSE.groupby("name _List")
list4 = []
list5 = []
notAwarded = "na"
for x, group in groupby_name:
if x != notAwarded:
list4.append(str.lower(str(x)))
dfwinList= pd.DataFrame(list4)
for x, group in groupby_nameList:
list5.append(str.lower(str(x)))
dfloseList = pd.DataFrame(list5)
数据示例:基本上,我主要需要删除句号和连字符,因为我需要将其与另一个文件进行比较,但是命名并不十分一致,因此我不得不删除非字母数字以获得更准确的结果< / p>
creative-3
smart tech pte. ltd.
nutritive asia
asia's first
所需结果:
creative 3
smart tech pte ltd
nutritive asia
asia s first
答案 0 :(得分:0)
为什么不只是以下内容,(我确实将其降低了):
df=df.replace('[^a-zA-Z0-9]', '',regex=True).str.lower()
那么现在:
print(df)
将获得所需的数据帧
尝试:
df=df.apply(lambda x: x.str.replace('[^a-zA-Z0-9]', '').lower(),axis=0)
如果只有一列:
df['your col']=df['your col'].str.replace('[^a-zA-Z0-9]', '').str.lower()
答案 1 :(得分:0)
仅使用DataFrame.replace
并将空白添加到模式:
df = df.replace('[^a-zA-Z0-9 ]', '', regex=True)
如果有一列-Series
:
df = pd.DataFrame({'col': ['creative-3', 'smart tech pte. ltd.',
'nutritive asia', "asia's first"],
'col2':range(4)})
print (df)
col col2
0 creative-3 0
1 smart tech pte. ltd. 1
2 nutritive asia 2
3 asia's first 3
df['col'] = df['col'].replace('[^a-zA-Z0-9 ]', '', regex=True)
print (df)
col col2
0 creative3 0
1 smart tech pte ltd 1
2 nutritive asia 2
3 asias first 3
编辑:
如果可能有多个列,则仅选择对象,显然选择字符串列,并在必要时强制转换为字符串:
cols = df.select_dtypes('object').columns
print (cols)
Index(['col'], dtype='object')
df[cols] = df[cols].astype(str).replace('[^a-zA-Z0-9 ]', '', regex=True)
print (df)
col col2
0 creative3 0
1 smart tech pte ltd 1
2 nutritive asia 2
3 asias first 3