根据条件在Python Pandas中分配不同的值

时间:2014-11-18 19:02:41

标签: python-2.7 pandas missing-data data-manipulation

我正在尝试清理数据。对于名字变量,我想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"]

1 个答案:

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