当我将一个函数应用于 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)
归档时间: |
|
查看次数: |
21763 次 |
最近记录: |