#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
?