你好,我正在寻求帮助,以了解没有/有一个空的第二个参数熊猫DataFrame.loc
方法引起的行为
考虑以下内容:
df=pd.DataFrame(index=pd.MultiIndex.from_tuples([('a', 1, 'x'),('a', 2, 'y'),('b', 1, 'x')]), data={'col_1':[1, 2, 3]})
df
输出:
<表类>col_1 tbody><<tr>1 x 1 2 y 2 b1 x 3 表类>
这里Pandas正在等待您指定第二个条件,以下面添加第二列为例。
import pandas as pd
tuples = [('a', 1, 'x'),('a', 2, 'y'),('b', 1, 'x')]
data1 = {'col_1':[1, 2, 3],'col_2':[4, 5, 6]}
df=pd.DataFrame(index=pd.MultiIndex.from_tuples(tuples), data=data1 )
x = df.loc [ ( slice(None), 1, slice(None) ) ]
y = (df.loc [ ( slice(None), 1, slice(None) ) , 'col_2' ])
z = (df.loc [ ( slice(None), 1, slice(None) ) , 'col_2' ]).loc [ ( slice(None), 1, slice(None) ) ]
print('2 Indexes here n' ,x,'n',x.index,'n')
print('3 indexes here n' ,y,'n',y.index,'n')
print('2 indexes here n' ,z,'n',z.index)
Outputs :
2 Indexes here
col_1 col_2
a x 1 4
b x 3 6
MultiIndex([('a', 'x'),('b', 'x')],)
3 indexes here
a 1 x 4
b 1 x 6
Name: col_2, dtype: int64
MultiIndex([('a', 1, 'x'),('b', 1, 'x')],)
2 indexes here
a x 4
b x 6
Name: col_2, dtype: int64
MultiIndex([('a', 'x'),('b', 'x')],)
第一次没有逗号的地方,你已经声明你只需要df.loc[(slice(None),1,slice(None))]。所以pandas会显示a和x。
如果您指定了您想要的内容,请键入eg print(df。loc [(slice(None), 1, 'x')]
It will output only 1 index because you have made it clear what you want.
col_1 col_2
a 1 4
b 3 6
Index(['a', 'b'], dtype='object')
然而在第二次切片中,你提到你特别想要列2 !所以pandas显示了第一个和第二个索引。
希望我的解释清楚!