我有一个看起来像这样的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/

10-12 18:06
查看更多