我有一个包含列A和列B的数据帧.列A包含非连续数据,其中一些行是NaN,而B包含连续数据.我想创建第三列,其中对于每一组具有NaN的A行,它将具有B中相同行中的值的总和+B中的下一个有效值. 对于A中的NaN,C中的所有其他值应该为NaN,对于A中有效数字后面的行,C中的所有其他值都应该为B值. 示例:
data = {
'A': [1, 1, None, None, 2, 5, None, None,3 ,4, 3, None , 5],
'B': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130]}
除了需要B+B中下一个有效值之和的行之外,其他行都运行良好. 我使用以下代码.我有这个代码,但现在看起来一团糟.
`result = df.groupby(df['A'].isnull().cumsum())['B'].sum().reset_index()
df_result = pd.DataFrame({'C': result['Pumped']})
df_result.loc[1:, 'C'] -= result.loc[0, 'Pumped']
df.loc[~mask, 'C'] = df.loc[~mask, 'Pumped']
valid_rows_after_nan = df['dWL'].notnull() & mask.shift(1).fillna(False)
df.loc[valid_rows_after_nan, 'C'] = df_result
print(df)`
我希望输出如下所示:
`data = {
'A': [1, 1, None, None, 2, 5, None, None,3 ,4, 3, None , 5],
'B': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130],
'C': [10, 20, None, None, 120, 60, None, None, 240, 100, 110, None, 5]
}