如果条件为真,我需要更改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()
答案 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)