Панды: изменить название многоуровневого столбца для одного конкретного столбца

Один из способов, о котором я могу думать, - использовать 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"}
   }
}]);
1
задан dorafmon 4 March 2019 в 15:05
поделиться

1 ответ

Значения 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'])
0
ответ дан ALollz 4 March 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: