有没有办法在 DataFrame 中使用 apply 和 lambda 时应用条件?

Is there a way to apply a condition while using apply and lambda in a DataFrame?

我有一个 Pandas 数据框,如下所示:

    ID                                               Dyn
0 AA01   0.084, 0.049, 0.016, -0.003, 0, 0.025, 0.954, 1
1 BG54   0.216, 0.201, 0.174, 0.175, 0.179, 0.191, 0.200

我正在寻找一种方法来遍历 Dyn 列,生成另一个仅对大于截止值的数字求和的方法,即:0.150,为所有传递给它的值分配一个值. 预期结果应如下所示:

    ID                                               Dyn Sum
0 AA01   0.084, 0.049, 0.016, -0.003, 0, 0.025, 0.954, 1   2
1 BG54   0.216, 0.201, 0.174, 0.175, 0.179, 0.191, 0.200   7

我想我可以使用 apply,同时在所有行中抖动:

for index, rows in df.iterrows():
   df['Sum'] = df['Dyn'].apply(lambda x: x = 1 if int(x) > 0.150 ) 

但我不知道如何将条件应用于 'Dyn' 中的所有值(仅当它大于 0.150 时才求和)以及如何将值 1 分配给它们。 接受所有建议。谢谢!

下面的呢?可以过滤掉不满足那个条件的记录,然后求和:

>>> x = pd.DataFrame({'ID': {0: 'A', 1: 'B'}, 'Dyn': {0: '1,2,3', 1: '2,3,4'}})
>>> x
  ID    Dyn
0  A  1,2,3
1  B  2,3,4
>>> y = x.set_index('ID').Dyn.str.split(',').explode().astype(int)
>>> y = y[y>=1.5]
>>> x.merge(y.groupby('ID').sum().reset_index().rename({'Dyn':'Sum'}, axis = 1))
  ID    Dyn  Sum
0  A  1,2,3    5
1  B  2,3,4    9
#Create temp column to hold Dyn convereted into list
df=df.assign(sum=df['Dyn'].str.split(','))

#Explode DataFrame
df=df.explode('sum')
#Convert to float
df['sum']=df['sum'].astype(float)
#Filter out values greater that 0.015, groupby and sum
df[df['sum'].gt(0.150)].groupby(['ID','Dyn'])['sum'].sum().reset_index()