2014-11-18 4 views
0

데이터를 정리하려고합니다. 첫 번째 변수의 경우, 1) 문자 하나만있는 항목에 누락 된 값 (NaN)을 할당하고, 2) 문자가 두 개만 있고 문자 중 하나가 기호 인 경우 누락 된 값을 할당합니다 (예 : " . "또는" "), 3) 변환" 기준에 따라 Python Pandas에서 다른 값을 할당

나는 다음과 같은 다른 코드를 시도했지만 아무것도 작동하는 것 같다 없다 "문자열"윌리엄을 "WM을?

수입 팬더 팬더에서 PD 로 수입 DataFrame, 당신이 찾고있는

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

팬더의 마법은 당신이 절대적으로 필요하지 않는 한 반복하지 않는 것입니다. 당신은 필요가 없습니다. pandas.DataFrame.replace : http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.replace.html –

+0

다음을 시도해 보겠습니다. frame2 [ "First_Name"]. replace (to_replace = "wm", value = "william"). 작동하지 않습니다. – KubiK888

+0

는 아래 예제에서 작동합니다. 나에게 당신을 위해 어떤 doesnt가 ​​작동하는지에 관해 알 수있게 해주세요 –

답변

2

다시 NP 수입 등의 시리즈 수입 NumPy와

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.replace 일부 데이터를 구성하는

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 
+0

고맙습니다. 'frame2 [ "First_Name"] = frame2 [ "First_Name"]. replace (to_replace = "wm", value = "william")와 같은 새 값과 같게 값을 설정하는 것을 잊었습니다. 고맙습니다. – KubiK888

+0

그 실수를 저번으로하지 않을 것입니다. 나는 항상 그것을한다;) –