所以我有一个数据:
import pandas as pd
df = pd.DataFrame({'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'score': [1, 3, 4, 5, 2]})我想根据“分数”栏中的条件创建一个新的列。
我就这样试过了
df['happiness'] = df['score']
def are_you_ok(df):
if df['happiness'] >= 4:
return 'happy',
elif df['happiness'] <= 2:
return 'sad',
else:
return 'ok'
df['happines'] = df['happiness'].apply(are_you_ok)
df但是,当我试图运行它时,我得到的只是:
TypeError: 'int' object is not subscriptable我能不能不使用这种带整数的函数?
发布于 2018-09-18 18:55:23
听起来你想要np.select从numpy
import numpy as np
conds = [df.score >=4, df.score <=2]
choices = ['happy', 'sad']
df['happiness'] = np.select(conds, choices, default='ok')
>>> df
name score happiness
0 Jason 1 sad
1 Molly 3 ok
2 Tina 4 happy
3 Jake 5 happy
4 Amy 2 sad注意:通过使用numpy (或pd.np,取决于导入熊猫的方式)而不是仅使用np,可以避免显式导入np。
https://stackoverflow.com/questions/52392922
复制相似问题