下面有一个DataFrameas:
Tester = pd.DataFrame({'Col1': ['A', 'A', 'B', 'B'],
'Col2': [1, 1, 2, 2],
'Col3': [1, 1, 2, 2],
'Col4': [1, 1, 2, 2],
'Col5': [1, 1, 2, 2]})
我想按Col1对DataFrame进行分组,然后按一个大小相等的包含标量的DataFrame划分分组:
Divider = pd.DataFrame({'Col2': [2, 2],
'Col3': [2, 2],
'Col4': [2, 2],
'Col5': [2, 2]})
在我看来,它的工作原理是这样的:
df = Tester.groupby('Col1').div(Divider)
但这将返回一个错误。有什么想法可以做到这一点吗?我希望得到以下输出DataFrame:
output = pd.DataFrame({'Col1': ['A', 'A', 'B', 'B'],
'Col2': [0.5, 0.5, 1, 1],
'Col3': [0.5, 0.5, 1, 1],
'Col4': [0.5, 0.5, 1, 1],
'Col5': [0.5, 0.5, 1, 1]})
注意每组A
、B
等将具有与分隔DataFrame Divider
相同的维度(在本例中为2x4)
3条答案
按热度按时间r6l8ljro1#
IIUC,您可以使用
groupby.apply
,并将每个组除以除法器作为numpy数组:或者使用numpy和**,假设组已排序**:
如果组未排序:
输出:
mzmfm0qo2#
下面是使用
cumcount()
的选项输出:
shyt4zoc3#
你也可以这样做:
产出将是: