столбец sum выше / ниже текущей строки в pandas

#python-3.x #pandas #dataframe

#python-3.x #pandas #фрейм данных

Вопрос:

Я пытаюсь добиться этого в pandas:

 df['X'] = df['C'].where(row is <= current row).sum()
df['Y'] = df['C'].where(row is >= current row).sum()
  

Какой правильный синтаксис позволяет pandas суммировать данные из столбца C, которые выше или равны текущей строке?

Ответ №1:

Это cumsum:

 df['X'] = df['C'].cumsum()
df['Y'] = df['C'].sum()   df['C'] - df['X']
# or 
# df['Y'] = df.iloc[::-1].cumsum()
  

Комментарии:

1. очень необходимый вопрос и ответ

2. последующий вопрос: если мне нужно исключить саму текущую строку (иначе говоря, «строка <» против «строка <=»), есть ли простой способ cumsum сделать это?

3. @Brannon cumsum не подойдет, но в сочетании с shift делает : df['C'].shift().cumsum() .

Ответ №2:

Давайте попробуем expanding , если вы можете выбрать нужную вам функцию agg и т. Д., mean / std

 df['X'] = df['C'].expanding().sum()
df['Y'] = df['C'].iloc[::-1].expanding().sum()
  

Комментарии:

1. Похоже, так и должно быть expanding ?