我正在努力以编程方式访问具有多索引的Pandas DataFrame。假设我有
-s
我可以得到与c1,c2和c3的[1、1、1]组合相对应的和
curl
将按预期返回10。
但是如果我有一个变量
import pandas as pd
df = pd.DataFrame([[0, 0, 0, 1],
[0, 0, 1, 2],
[0, 1, 0, 7],
[0, 1, 1, 9],
[1, 0, 0, 1],
[1, 0, 1, 0],
[1, 1, 0, 1],
[1, 1, 1, 10]], columns=['c1', 'c2', 'c3', 'value'])
sums = df.groupby(['c1', 'c2', 'c3']).value.sum()
我如何获得相同的价值?
我尝试过
sums[1, 1, 1]
给出
q = [1, 1, 1]
我还认为明星运营商可以工作:
sums[q]
但这是无效的语法。
答案 0 :(得分:1)
将Series.xs
与tuple
一起使用:
print (sums.xs((1,1,1)))
10
print (sums.loc[(1,1,1)])
#alternative
#print (sums[(1,1,1)])
10
q = [1, 1, 1]
print (sums.loc[tuple(q)])
#alternative
#print (sums[tuple(q)])
10