2017-01-26 74 views
0

我有以下的熊猫数据框:在大熊猫新列数据框有条件的其他列的值

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时可用和pop_2014如果pop_2015 == NaN的

感谢

+1

我想你是能够创建列,太!那么你有什么尝试? – blacksite

+0

我对Python和编程一般都很陌生... 我试图根据if/else语句计算它,但无法使其工作。 – Pierre

回答

4

请务必阅读10 Minutes to pandas。对于这种情况,我们使用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在这里是替代之一“ – Boud

+0

@Boud感谢您的信息 – Shijo

相关问题