根据条件对列中的行求和并将其输出到新列中

问题描述 投票:0回答:1

在我的数据框中,我想对列中的某些行求和并将它们输出到新列“UE_more_days”中

    ATEXT   BEGUZ_UE   UE_more_days
0             11.00            0.0
1     CT      23.00            Nan
2     RT      33.00           46.0
3             15.00            0.0
3             15.00            0.0
4             12.75            0.0
5             19.75            0.0
6             14.75            0.0
7     CT      23.00           29.5
8     CT      24.00           46.0
9     CT      24.00           48.0
10    RT      33.00           48.0
11            15.00            0.0
12
etc

应该是

    ATEXT   BEGUZ_UE   UE_more_days
0
1     CT      23.00
2     RT      33.00           56.0
3             15.00
4             12.75
5             19.75
6             14.75
7     CT      23.00
8     CT      24.00
9     CT      24.00
10    RT      33.00          104.0
11            15.00
12
etc

我最后一次尝试

bedd2 = [(df['ATEXT'] != ''),]
result2 = [(df.iloc[0:]['BEGUZ_UE'].astype(float).reset_index(drop=True) +
df.iloc[1:]['BEGUZ_UE'].astype(float)).round(decimals=2).shift(1)]
df['min_UE_mehr_Tage'] = np.select(bedd2, result2)

如何根据条件对列中的行求和并将其输出到新列中?

python pandas dataframe numpy sum
1个回答
0
投票

将 BEGUZ_UE 中 ATEXT 等于“”的值替换为 Nan,然后根据相同条件创建组。

m = df['ATEXT'].eq("")
df['UE_more_days'] = (df['BEGUZ_UE'].mask(m)
                      .groupby(m.cumsum()).cumsum()
                      .where(df['ATEXT'].eq('RT'))
                     )

最终结果:

ATEXT  BEGUZ_UE  UE_more_days
          11.00           NaN
   CT     23.00           NaN
   RT     33.00          56.0
          15.00           NaN
          15.00           NaN
          12.75           NaN
          19.75           NaN
          14.75           NaN
   CT     23.00           NaN
   CT     24.00           NaN
   CT     24.00           NaN
   RT     33.00         104.0
          15.00           NaN
© www.soinside.com 2019 - 2024. All rights reserved.