繁体   English   中英

从列中删除整数和特殊字符

[英]Remove Integers and special characters from column

python 的新手,想从列值中删除特殊字符和整数。 我确实想在列中只保留字符串字符。 对于这种情况,列 C我确实想删除特殊字符,如斜杠和数字,见表

import pandas as pd 

data = {'A':['NW', 'NB', 'UK', 'CAN', 'der'],'B':['Tom', 'nick', 'krish', 'jack','mark'], 'C':['|20|Empty,', 'Yes| -1', 'Male|-1|2-female|0', 'Yes| 1', 79]} 
df = pd.DataFrame(data) 
print(df)

现在,如果一行在 C 列中只有一个 integer,我应该删除它,我已经尝试过,但效果不佳

df['C'].map(lambda x: re.sub(r'\-,+', '', x))

预期 OUTPUT

import pandas as pd 

data = {'A':['NW', 'NB', 'UK', 'CAN'],'B':['Tom', 'nick', 'krish', 'jack'], 'C':['Empty', 'Yes', 'Male female', 'Yes']} 
df = pd.DataFrame(data) 
print(df)

使用str.replace

前任:

data = {'A':['NW', 'NB', 'UK', 'CAN', 'der'],'B':['Tom', 'nick', 'krish', 'jack','mark'], 'C':['|20|Empty,', 'Yes| -1', 'Male|-1|2-female|0', 'Yes| 1', 79]} 
df = pd.DataFrame(data)
df["C"] = df["C"].str.replace(r"[^a-zA-Z]+", " ", regex=True).str.strip() 
print(df)

Output:

     A      B            C
0   NW    Tom        Empty
1   NB   nick          Yes
2   UK  krish  Male female
3  CAN   jack          Yes
4  der   mark          NaN

试试这个,使用.apply

>>> df['C'].apply(lambda x: re.sub(r'[^a-zA-Z ]+', ' ', str(x)))
0         Empty
1          Yes 
2    Male female
3          Yes 
4              
Name: C, dtype: object

您可以使用str.replace + str.strip最后使用dropna

df['C'] = df.C.str.replace('(?i)[^a-z]', ' ').str.replace('\s+', ' ').str.strip()
print(df.dropna())

Output

     A      B            C
0   NW    Tom        Empty
1   NB   nick          Yes
2   UK  krish  Male female
3  CAN   jack          Yes

下面的代码应该可以工作,但可能不是最佳的方法。

df["C"].str.replace("[0-9]","").str.replace("|"," ").str.replace(",","").str.replace("-","").dropna()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM