Один из способов, о котором я могу думать, - использовать javascript оболочки mongo для изменения документа, добавив новое числовое поле, valuessnumber (числовое преобразование существующего поля «значение строки») в существующий документ или в новый документ , Затем используйте это числовое поле для дальнейших вычислений.
db.numbertest.find().forEach(function(doc) {
doc.valueasnumber = new NumberInt(doc.value);
db.numbertest.save(doc);
});
Использование поля valuesnumber для числового вычисления
db.numbertest.aggregate([{$group :
{_id : null,
"score" : {$avg : "$valueasnumber"}
}
}]);
Значения MultiIndex
являются кортежами, которые являются неизменяемыми, поэтому, вероятно, так сложно просто изменить одноуровневое значение. Вместо этого создайте новые кортежи, затем снова назначьте MultIndex.
df.columns = pd.MultiIndex.from_tuples(
[(x, 'google', z) if z == 'alpha_dog' else (x,y,z) for x,y,z in df.columns],
names=df.columns.names)
type A B
kind A1 google B1 google
name alpha alpha1 alpha_dog alpha alpha1 alpha_dog
0 1 1 1 1 1 1
1 1 1 1 1 1 1
2 1 1 1 1 1 1
import pandas as pd
df = pd.DataFrame([[1]*6]*3)
df.columns = pd.MultiIndex.from_tuples(
tuple((x,y,z) for x,y in zip(['A', 'B'], ['A1', 'B1']) for z in ['alpha', 'alpha1', 'alpha_dog']),
names=['type', 'kind', 'name'])