问题描述
我有以下DataFrame
名为pop:
California 2000 33871648
2010 37253956
New York 2000 18976457
2010 19378102
Texas 2000 20851820
2010 25145561
我想打印出加利福尼亚和德克萨斯州的2010年值。每当我尝试pop[['California','Texas'],2010]
时,我都会遇到错误'(['California',2010)' is an invalid key
那我该如何打印信息?
解决方法
TLDR
10M
在这种情况下为:
df.loc[(level_1_indices_list,level_2_indices_list),:]
下面是更详细的版本。
df.loc[(['California','Texas'],['2010']),:]
创建示例数据框
# import packages & set seed
import numpy as np
import pandas as pd
np.random.seed(42)
这看起来像:
使用多索引切片
使用arrays = [np.array(['bar','bar','baz','foo','qux','qux']),np.array(['one','two','one','two'])]
s = pd.Series(np.random.randn(8),index=arrays)
df = pd.DataFrame(np.random.randn(8,4),index=arrays)
,您可以执行以下操作:
df
为了实现符号一致性,您可以在切片的第二个元素上使用df.loc[(['qux','foo'],'one'),:]
:
[]
将产生相同的结果。
哪个是
(选择df.loc[(['qux',['one']),:]
等同于在'one'
中选择2010
。df
等同于选择['California','Texas']。基于此,我认为您可以将此处的步骤应用于您的数据。)
This可能也有帮助。
,我希望通过指定列名来实现这一点,可以通过添加更多的&
df.loc[(df['level_0'].isin(['California','Texas'])) & (df['level_1'].isin(['2010']))]