我正在尝试清理数据。对于名字变量,我想1)将缺失值(NaN)分配给只有一个字符的条目,2)如果它只包含两个字符,则分配缺失值,其中一个字符是符号(即:“ 。“或”?“),和3)将”wm“转换为字符串”william“
我尝试了以下和其他代码,但似乎都没有:
将pandas导入为pd 来自pandas导入DataFrame,系列 导入numpy为np 导入重新
def CleanUp():
data = pd.read_csv("C:\sample.csv")
frame2 = DataFrame(data)
frame2.columns = ["First Name", "Ethnicity"]
# Convert weird values to missing value
for Name in frame2["First_Name"]:
if len(Name) == 1:
Name == np.nan
if (len(Name) == 2) and (Name.str.contain(".|?|:", na=False)):
Name == np.nan
if Name == "wm":
Name == "william"
print frame2["First_Name"]
答案 0 :(得分:2)
您正在寻找df.replace
补充一些数据:
np.random.seed(3)
n=6
df = pd.DataFrame({'Name' : np.random.choice(['wm','bob','harry','chickens'], size=n),
'timeStamp' : np.random.randint(1000, size=n)})
print df
Name timeStamp
0 harry 256
1 wm 789
2 bob 659
3 chickens 714
4 wm 875
5 wm 681
运行替换:
df.Name = df.Name.replace('wm','william')
print df
Name timeStamp
0 harry 256
1 william 789
2 bob 659
3 chickens 714
4 william 875
5 william 681