1
我發現了loc的一些有趣的行爲(bug?),帶有多索引數據幀,其中第一個索引是單個索引。使用loc(第一次)後,第一個索引(多索引)消失!pandas loc修改多索引dataFrame?
例如:
In [1]: import pandas as pd
In [2]: x = pd.DataFrame({'idx1':[1]*10, 'idx2':[1]*5+[2]*5, 'idx3':range(5)+range(5), 'data': [1]*10})
In [3]: x = x.set_index(['idx1', 'idx2', 'idx3']).sortlevel()
我的數據框:
In [5]: x.loc[1,:,:]
Out[5]:
data
idx2 idx3
1 0 1
1 1
2 1
3 1
4 1
2 0 1
1 1
2 1
3 1
4 1
現在數據框中只有兩個指標:
In [6]: x
Out[6]:
data
idx2 idx3
1 0 1
1 1
2 1
3 1
4 1
2 0 1
1 1
2 1
3 1
4 1
用於第一次
In [4]: x
Out[4]:
data
idx1 idx2 idx3
1 1 0 1
1 1
2 1
3 1
4 1
2 0 1
1 1
2 1
3 1
4 1
祿
這不會發生「IDX1」當有多個值:
In [7]: x = pd.DataFrame({'idx1':[1]*3+[2]*7, 'idx2':[1]*5+[2]*5, 'idx3':range(5)+range(5), 'data': [1]*10})
In [8]: x = x.set_index(['idx1', 'idx2', 'idx3']).sortlevel()
In [9]: x
Out[9]:
data
idx1 idx2 idx3
1 1 0 1
1 1
2 1
2 1 3 1
4 1
2 0 1
1 1
2 1
3 1
4 1
In [10]: x.loc[1,:,:]
Out[10]:
data
idx1 idx2 idx3
1 1 0 1
1 1
2 1
In [11]: x
Out[11]:
data
idx1 idx2 idx3
1 1 0 1
1 1
2 1
2 1 3 1
4 1
2 0 1
1 1
2 1
3 1
4 1
這是正常的行爲呢?如何避免這種情況?
Python 2.7版32位,熊貓== 0.16.2,numpy的== 1.11.1 + MKL
非常感謝,現在它的工作! :) – jdzejdzej