Это просто означает, что вы не можете повторно назначить свою ссылку. Попытка сделать что-то вроде приведенного ниже приведет к ошибке компилятора.
final List<String> list = new ArrayList<String>();
list = new LinkedList<String>();
^
Compiler error here
Если вам действительно нужен неизменный список, вы должны использовать метод Collections.unmodifiableList()
.
df.groupby('z').agg({'x':'sum','y':lambda r: r.reindex(i).sum()})
Вывод:
x y
z
a 6 7
b 15 22
Используйте reindex
, чтобы выбрать только эти индексы из i, затем dropna
, чтобы удалить все эти наны. из-за того, что индексы в я не в дф. Затем groupyby
и agg
:
df.reindex(i).dropna(how='all').groupby('z').agg({'y':'sum'})
или, вам действительно не нужно падать:
df.reindex(i).groupby('z').agg({'y':'sum'})
Вывод:
y
z
a 7.0
b 22.0
Используйте intersection
с df.index
и i
для получения только совпадающих значений, а затем обрабатывает данные как нужно:
print (df.loc[df.index.intersection(i)])
x y z
0 1 7 a
3 4 10 b
5 6 12 b
df = df.loc[df.index.intersection(i)].groupby('z').agg({'y':'sum'})
#comment alternative
#df = df.loc[df.index.isin(i)].groupby('z').agg({'y':'sum'})
print (df)
y
z
a 7
b 22
РЕДАКТИРОВАТЬ:
df1 = df.groupby('z').aggregate({'x':sum, 'y': lambda x: sum(x.loc[x.index.intersection(i)])})
#comment alternative
#df1 = df.groupby('z').aggregate({'x':sum, 'y': lambda x: sum(x.loc[x.index.isin(i)])})
print (df1)
x y
z
a 6 7
b 15 22