使用 Pandas DataFrame、df 和函数,如下所示
def code(x):
for item in x:
if x in [21,32]:
return'Cat A'
elif x in [22,34]:
return"Cat B"
else:
print ('sorry')
我有一个 DataFrame,df,它有一列('Ref')包含数字
df =
**Document No** **Date**. **Ref**
2018-0212 2019-03-28 71
2018-0212R1 2019-03-28 71
2019-0004 2019-01-11 34
2019-0005 2019-01-14 25
我希望使用上面的函数迭代该列“Ref”,并在附加到 df 的新列中返回结果(即包含“CAT A”、“CAT B”或“抱歉”的列)
我努力了
df.apply.code(df['Ref'])
没有成功。有什么想法吗?谢谢
这个解决方案非常简单,每一行都将根据.loc()
. 最后一行用于.fillna()
分配默认值。
df.loc[df['your_column'].isin([21,32]), 'Category'] = 'CAT A'
df.loc[df['your_column'].isin([22,34]), 'Category'] = 'CAT B'
df['Category'] = df.Category.fillna('Sorry')
这是@ALollz 建议的此答案中描述的方法。这可能是最好的处理方式,但对于简单的情况来说有点麻烦。
首先,您需要列出您的条件和选择,然后,np.select
您可以根据给定的条件为“类别”值赋予属性。该default
参数将用于填充所有条件都失败的地方。
conditions = [df['your_column'].isin([21,32]), df['your_column'].isin([22,34])]
choices = ['CAT A', 'CAT B']
df['Category'] = np.select(conditions, choices, default="Sorry")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句