Ich frage mich, ob es eine gleichwertige Möglichkeit gibt, eine Zeile oder einen DataFrame mit einem MultiIndex einer Zeile hinzuzufügen, wie es mit einem einzigen Index, d.h. mit .ix oder .loc?Hinzufügen einer Zeile zu einem MultiIndex DataFrame/Series
dachte ich, die natürliche Art und Weise so etwas wie
row_to_add = pd.MultiIndex.from_tuples()
df.ix[row_to_add] = my_row
sein würde, aber das wirft eine KeyError. Ich weiß, dass ich .append() verwenden kann, aber ich würde es viel besser finden, .ix [] oder .loc [] zu verwenden.
hier ein Beispiel:
>>> df = pd.DataFrame({'Time': [dt.datetime(2013,2,3,9,0,1), dt.datetime(2013,2,3,9,0,1)], 'hsec': [1,25], 'vals': [45,46]})
>>> df
Time hsec vals
0 2013-02-03 09:00:01 1 45
1 2013-02-03 09:00:01 25 46
[2 rows x 3 columns]
>>> df.set_index(['Time','hsec'],inplace=True)
>>> ind = pd.MultiIndex.from_tuples([(dt.datetime(2013,2,3,9,0,2),0)],names=['Time','hsec'])
>>> df.ix[ind] = 5
Traceback (most recent call last):
File "<pyshell#201>", line 1, in <module>
df.ix[ind] = 5
File "C:\Program Files\Python27\lib\site-packages\pandas\core\indexing.py", line 96, in __setitem__
indexer = self._convert_to_indexer(key, is_setter=True)
File "C:\Program Files\Python27\lib\site-packages\pandas\core\indexing.py", line 967, in _convert_to_indexer
raise KeyError('%s not in index' % objarr[mask])
KeyError: "[(Timestamp('2013-02-03 09:00:02', tz=None), 0L)] not in index"