2017-09-28 14 views
0

私は以下の問題を解決したいと思いますPythonの関数でいくつかのフレームを変更します

私は以下のコードを持っています。私はいくつかのデータフレームを挿入し、私はインプレースを使用しています唯一の関数内のデータフレームへの変更を行うことができる午前一度

def reverse_df(*df): 
    for x in df: 
     x=x.loc[::-1].reset_index(level=0, drop=True) 
    return 

reverse_df(df1,df2,df3,df4,df5) 

に変更を適用する必要があります= Trueのような以下で

def remove_na(*df): 
    for x in df: 
     x.dropna(axis=0, how='all',inplace=True) 
    return 
remove_na(df1,df2,df3,df4,df5) 

以下を購入すると動作しません

def remove_na(*df): 
    for x in df: 
     x=x.dropna(axis=0, how='all') 
    return 
remove_na(df1,df2,df3,df4,df5) 

私は間違って何をしていますか?

+0

あなたは 'return df'をしますか? – IanS

+0

リターンdfは必要ありません、私の場合は何も変更されません。私は変更が適用されることを希望します –

答えて

0

短い答え:x = x.dropna(axis=0, how='all')は関数内にxというローカル変数を作成するため、元のデータフレームへの参照は失われ、変更は適用されません。 inplace operations are not really inplace以来、あなたはおそらく修正データフレームを返す方がいいでしょう、しかし

def reverse(df): 
    df.reset_index(drop=False, inplace=True) 
    df.sort_index(ascending=False, inplace=True) 
    df.set_index('index', drop=True, inplace=True) 

:あなたができるデータフレームを逆転させる特定のケースを解決するために


+0

これは私が考えたものです。しかし、 'inplace'パラメータがないときに変更を適用する方法はありますか? –

+0

これは一般的な質問か、この場合のみです( '.loc [:: - 1]')? – IanS

+0

私はこのケースにほとんど関心がありますが、一般的に修正を適用する方法を知ることは有益です –

関連する問題