我有一个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'
提前感谢您的帮助!
答案 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']]