如何在没有其他条件的情况下使用Python lambda?

时间:2019-05-10 14:50:32

标签: python pandas dataframe

如果条件为真,我需要更改myCol的值。如果条件不成立,则什么也不会发生(如果我执行else None,它将None作为值写入myCol)

tmp_df = someDataframe.groupby('ID').myCol.apply(lambda x: 'a' if (x=='A').any() else *DO NOTHING, THE myCol VALUE HAS TO STAY SAME*)

tmp_df=tmp_df.to_frame()

3 个答案:

答案 0 :(得分:1)

如果您希望保持该值不变,则可以将else的值设置为lambda参数x

df.col.apply(lambda x: new_value if some_condition else x)

以您的语言:

tmp_df = someDataframe.groupby('ID').myCol.apply(lambda x: 'a' if (x=='A').any() else x)

答案 1 :(得分:0)

根据复杂度,这里可能会有更有效的答案。我用np.where得到你的答案。

 import numpy as np
 df['conditional'] = np.where(
      (df['conditional'] == 'A'), # Condition
      'a', # Value if true
      df['conditional'] # Value if false
      # /\ this is equal to the original value so it has no effect
 )

文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

答案 2 :(得分:0)

您尝试过这种方法吗?

tmp_df = someDataframe.groupby('ID').myCol.apply(lambda x: 'a' if (x=='A').any() else x)