我有一个看起来像这样的df:
df
dim_pptx qp_pptx diff
Absolute Radio 7.39 7.53 0.14
BBC Asian Network 0.13 0.13 0.00
BBC Radio 1 14.41 14.55 0.14
BBC Radio 1Xtra 0.57 0.58 0.01
BBC Radio 2 23.36 23.39 0.03
我想添加一个新列,其中包含基于df ['diff']的值
预期产量:
df
dim_pptx qp_pptx diff sig
Absolute Radio 7.39 7.53 0.14 **
BBC Asian Network 0.13 0.13 0.00 -
BBC Radio 1 14.41 14.55 0.14 **
BBC Radio 1Xtra 0.57 0.58 0.01 -
BBC Radio 2 23.36 23.39 0.03 *
因此条件将是:
if value > 0.1:
value = '**'
elif value > 0.02:
value = '*'
else:
value = '-'
我的尝试:
comp_df['sig'] = comp_df.apply(lambda x : '*' if comp_df['diff'] > 0.01 else '', axis=0)
错误:
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', u'occurred at index dim_pptx')
最佳答案
如果使用DataFrame.apply
(如果使用axis=0
),则会通过列应用条件,要使用apply
遍历每一行,则需要axis=1
。
但是鉴于此,您可以在Series.apply
系列上使用DataFrame.apply
代替'diff'
。范例-
comp_df['sig'] = comp_df['diff'].apply(lambda x: '**' if x > 0.1 else '*' if x > 0.02 else '-')
关于python - Pandas :根据另一列的值添加值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33285717/