4
У меня есть блок данных Pindas multiindex, и мне нужно присвоить значения одному из столбцов из серии. Серия делится своим индексом с первым уровнем индекса кадра данных.Назначение значений Pandas Multiindex DataFrame по уровню индекса
import pandas as pd
import numpy as np
idx0 = np.array(['bar', 'bar', 'bar', 'baz', 'foo', 'foo'])
idx1 = np.array(['one', 'two', 'three', 'one', 'one', 'two'])
df = pd.DataFrame(index = [idx0, idx1], columns = ['A', 'B'])
s = pd.Series([True, False, True],index = np.unique(idx0))
print df
print s
из:
A B
bar one NaN NaN
two NaN NaN
three NaN NaN
baz one NaN NaN
foo one NaN NaN
two NaN NaN
bar True
baz False
foo True
dtype: bool
Они не работают:
df.A = s # does not raise an error, but does nothing
df.loc[s.index,'A'] = s # raises an error
ожидается выход:
A B
bar one True NaN
two True NaN
three True NaN
baz one False NaN
foo one True NaN
two True NaN
мне интересно, если это ошибка, что он не работает, если значения прошло имеют значения индекса, которые могут быть выровнены, во всяком случае +1 – EdChum
Я не мог понять, какой синтаксис должен использовать '.loc' либо для назначения значений, надеюсь, что лучший человек-панда ответит на это. Для меня это должно работать, поэтому должен быть способ сделать это, не прибегая к «карте» – EdChum
О, я думал, что вы имеете в виду что-то еще. Я считаю, что карта так же хороша, как и любая другая. Также можно выполнить слияние, но я подозреваю, что это немного медленнее (но, возможно, более ясное для чтения). – JohnE