2016-11-04 45 views
1

當我試着用下面的代碼iam得到意想不到的結果。
這是我的代碼: 高清copy_blanks(DF,列):在dataframe iam中獲得意想不到的結果

df.iloc[:, -1] = df.iloc[:, column] 
    df.loc[df.iloc[:, column] == '', -1] = '' 

My input file: 
word,number 
abc,0 
adf,0 
gfsgs,0 
,0 
sdfgsd,0 
fgsdfg,0 
sfdgs,0 

Iam getting like below output: 
word,number,word_clean 
NA,0,abc 
NA,0,adf 
NA,0,gfsgs 
,0, 
NA,0,sdfgsd 
NA,0,fgsdfg 
NA,0,sfdgs 

I Want to get like below output: 
word,number,word_clean 
abc,0,abc 
adf,0,adf 
gfsgs,0,gfsgs 
,0, 
sdfgsd,0,sdfgsd 
fgsdfg,0,fgsdfg 
sfdgs,0,sfdgs 

請建議我。我認爲問題是由這個代碼[df.loc [df.iloc [:,列] =開始='',-1] ='']。

回答

0

IIUC需要fillna更換NaN空字符串:

print (df) 
    word number 
0  abc  0 
1  adf  0 
2 gfsgs  0 
3  NaN  0 
4 sdfgsd  0 
5 fgsdfg  0 
6 sfdgs  0 

def copy_blanks(df, column): 
    df['new'] = df.iloc[:, column] 
    df['new'] = df['new'].fillna('') 
    return df 

column = 0 
print (copy_blanks(df, column))  
    word number  new 
0  abc  0  abc 
1  adf  0  adf 
2 gfsgs  0 gfsgs 
3  NaN  0   
4 sdfgsd  0 sdfgsd 
5 fgsdfg  0 fgsdfg 
6 sfdgs  0 sfdgs 
+0

我不知道到底需要,因爲如果在複製列空字符串,那麼'df.loc [df.iloc [:,列] =='',-1] ='''沒有必要。或者我缺少什麼? – jezrael

+0

謝謝,它工作正常。 – user6708957

+0

如果我的回答很有幫助,請不要忘記[接受](http://meta.stackexchange.com/a/5235/295067)它。您也可以註冊 - 點擊接受標記上方'0'上方的小三角。謝謝。 – jezrael