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)
答案 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()