根据现有列中的bool值向pandas数据帧添加列

时间:2016-12-09 20:24:23

标签: python pandas dataframe

我有一个pandas数据框,我想添加一个新列。新列值将由包含bools的数据框中的现有列确定。下面的代码是我在python中应用的C ++逻辑,但我想要一个更“pythonic”的方法来做到这一点。 'isfixed'包含bools,新列将包含'color code'

for i in range(data_2015['isfixed'].count()):
     if data_2015['isfixed'][i] == True:
         data_2015['color code'][i] = 'Blue'
     else:
         data_2015['color code'][i] = 'Green'

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用numpy.where

import numpy as np
data_2015['color_code'] = np.where(data_2015['isfixed'], 'Blue', 'Green')

演示:

df = pd.DataFrame({'isfixed': [True, False, True]})

df
Out: 
  isfixed
0    True
1   False
2    True


df['color_code'] = np.where(df['isfixed'], 'Blue', 'Green')

df
Out: 
  isfixed color_code
0    True       Blue
1   False      Green
2    True       Blue

答案 1 :(得分:0)

对于纯粹的熊猫解决方案:

df = pd.DataFrame({'isfixed': [True, False, True]})

df['color_code'] = ["Blue" if value==True else "Green" for value in df['isfixed']]