2016-11-04 24 views
1


これは私のコードです: DEF copy_blanks(DF、列):予期せぬ結果を得る以下のコードで試したときに、予期せぬ結果を得るデータフレーム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 

[me.Iは問題は、このコードできていると思う提案してくださいdf.loc [df.iloc [:,列] = = ''、-1] = '']。

答えて

0

IIUCあなたは空の文字列にNaNを交換するためのfillnaが必要になります。

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)を忘れないでください。あなたもupvoteすることができます - マークを受け入れる上記の '0 'の上の小さな三角形をクリックします。ありがとう。 – jezrael

関連する問題