您好,我正在寻求帮助,以了解pandas 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
输出:
| | | | 列_1|
| - ------| - ------| - ------| - ------|
| 项目a| 1个|x| 1个|
| | 第二章|Y型|第二章|
| b.人口基金|1个|x|三个|
如果我使用df.loc[(slice(None), 1, slice(None))]
访问行,则返回的结果具有不同的索引:
| | | 列_1|
| - ------| - ------| - ------|
| 项目a| x| 1个|
| b.人口基金|x|三个|
保留元组值为slice(None)
的索引列,并删除显式指定值的索引列。
但是,如果我在限制元组后面放一个逗号,索引就会被保留:df.loc[(slice(None), 1, slice(None)),]
产量:
| | | | 列_1|
| - ------| - ------| - ------| - ------|
| 项目a| 1个|x| 1个|
| b.人口基金|1个|x|三个|
如果有人能解释输入(slice(None), 1, slice(None))
和(slice(None), 1, slice(None)),
的差异以及为什么这会导致输出的差异,我将不胜感激
1条答案
按热度按时间bxgwgixi1#
这里Pandas正在等待您指定第二个条件,以下面的例子,其中第二列被添加。
第一次没有逗号的时候,你说你只需要df. loc [(slice(None),1,slice(None))],所以panda显示了a和x。
如果你指定你想要的,比如说print(df. loc [(slice(None),1,'x')]
而在第二个时间片中,你提到你特别想要第二列!所以Pandas显示了第一个和第二个索引。
希望我解释清楚!