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

时间:2019-10-15 11:44:36

标签: python pandas dataframe

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列中只有一个整数,我应该将其删除,我已经试过了,但效果不佳

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

预期产量

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)

4 个答案:

答案 0 :(得分:1)

使用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)

输出:

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

答案 1 :(得分:1)

使用insert

尝试一下
.apply

答案 2 :(得分:1)

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

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

输出

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

答案 3 :(得分:0)

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

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