Pandas,未来警告:使用多个键进行索引

cmo*_*sig 30 python pandas

当我将一个函数应用于 groupby 对象的多个列时,Pandas 会抛出一个未来警告。它建议使用列表作为索引而不是元组。怎么办呢?

>>> df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
>>> df.groupby([0,1])[1,2].apply(sum)
<stdin>:1: FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.
     1  2
0 1      
1 2  2  3
4 5  5  6
7 8  8  9
Run Code Online (Sandbox Code Playgroud)

Arn*_*rne 30

在 GitHub 上讨论之后,这个警告是在 pandas 1.0.0 中引入的。所以最好使用那里的建议:

df.groupby([0, 1])[[1, 2]].apply(sum)
Run Code Online (Sandbox Code Playgroud)

也可以将切片操作移到最后,但效率不高:

df.groupby([0, 1]).apply(sum).loc[:, 1:]
Run Code Online (Sandbox Code Playgroud)

感谢 @ALollz 和 @cmosig 提供有用的评论。


Pig*_*der 12

在 groupby 方法之后使用双括号。单括号用于输出 Pandas 系列,双括号用于输出 Pandas DataFrame。

df.groupby([0,1])[[1,2]].apply(sum)
Run Code Online (Sandbox Code Playgroud)