查找规范化的数据帧将删除用于分组的列,以便它不能在后续的groupby操作中使用.例如(编辑:更新):
df = pd.DataFrame({'a':[1, 1 , 2, 3, 2, 3], 'b':[0, 1, 2, 3, 4, 5]})
a b
0 1 0
1 1 1
2 2 2
3 3 3
4 2 4
5 3 5
df.groupby('a').transform(lambda x: x)
b
0 0
1 1
2 2
3 3
4 4
5 5
Run Code Online (Sandbox Code Playgroud)
现在,对于组中的大多数操作,"缺失"列变为新索引(然后可以使用reset_index或设置进行调整as_index=False),但是当使用变换时,它会消失,留下原始索引和没有密钥的新数据集.
编辑:这是我希望能够做到的一个内容
df.groupby('a').transform(lambda x: x+1).groupby('a').mean()
KeyError 'a'
Run Code Online (Sandbox Code Playgroud)
在pandas docs的示例中,使用函数根据索引进行拆分,这似乎完全避免了这个问题.或者,总是可以在groupby/transform之后添加列,但肯定有更好的方法吗?
更新:看起来reset_index/as_index仅适用于将每个组缩减为单个行的函数.从答案来看,似乎有几种选择
这个问题也在这里讨论。
返回的对象与原始 df 具有相同的索引,因此您可以执行
pd.concat([
df['a'],
df.groupby('a').transform(lambda x: x)
], axis=1)
Run Code Online (Sandbox Code Playgroud)
太奇怪了!
我是这样欺骗它的
df.groupby(df.a.values).transform(lambda x: x)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |