2017-01-26 11 views
0

I以下のパンダのデータフレームを持っている:新しい列は他の列の値を条件DATAFRAME

df = pd.DataFrame({'country' : ['US','FR','DE','SP'], 
    'energy_per_capita': [10,8,9,7], 
    'pop_2014' : [300,70,80,60], 
    'pop_2015': [305,72,80,'NaN']}) 

私は、新しい列を作成したいと思います:

df['total energy consumption'] 

energy_per_capitaとポップを乗算。 私はpop_2015 == NaNの

おかげで

+1

を使用しています!あなたは何を試しましたか? – blacksite

+0

私はPythonの初心者で一般的なプログラミングです。 if/else文に基づいて計算しようとしましたが、動作させることができませんでした。 – Pierre

答えて

4

あなたが10 Minutes to pandasを読んで確認している場合、それはpop_2015時に利用可能とpop_2014を取るしたいと思います。この場合のために、私たちは、あなたがあまりにも、その列を作成できるようにするために私が好きなpandas.DataFrame.fillna方法

df = pd.DataFrame({'country' : ['US','FR','DE','SP'], 
    'energy_per_capita': [10,8,9,7], 
    'pop_2014' : [300,70,80,60], 
    'pop_2015': [305,72,80,np.nan]}) 

df['total energy consumption']= df['energy_per_capita'] *df['pop_2015'].fillna(df['pop_2014']) 
print df 

出力

country energy_per_capita pop_2014 pop_2015 total energy consumption 
0  US     10  300  305.0     3050.0 
1  FR     8  70  72.0      576.0 
2  DE     9  80  80.0      720.0 
3  SP     7  60  NaN      420.0 
+0

初心者の質問について大変ありがとうございます... – Pierre

+1

私は 'df.pop_2015.combine_first(df.pop_2014)'というコンセプトに合っていますが、 "この列から値を取るが、NaNなら代替の1つ " – Boud

+0

@Boud情報のおかげで – Shijo

関連する問題