我有以下 Pandas DataFrame:
df = pd.DataFrame([[1, 21, 20, 1.10],
[1, 22, float('NaN'), 1.10],
[1, 23, float('NaN'), 1.12],
[2, 21, 15, 1.30],
[2, 22, float('NaN'), 1.12],
[3, 21, 25, 1.15],
[3, 22, float('NaN'), 1.00],
[3, 23, float('NaN'), 1.13]], columns=['User', 'Age', 'Salary', 'Rate'])
╔══════╦═════╦════════╦══════╗
║ User ║ Age ║ Salary ║ Rate ║
╠══════╬═════╬════════╬══════╣
║ 1 ║ 21 ║ 20 ║ 1.10 ║
║ 1 ║ 22 ║ NaN ║ 1.10 ║
║ 1 ║ 23 ║ NaN ║ 1.12 ║
║ 2 ║ 21 ║ 15 ║ 1.30 ║
║ 2 ║ 22 ║ NaN ║ 1.12 ║
║ 3 ║ 21 ║ 25 ║ 1.15 ║
║ 3 ║ 22 ║ NaN ║ 1.00 ║
║ 3 ║ 23 ║ NaN ║ 1.13 ║
╚══════╩═════╩════════╩══════╝
我需要获取 Salary 列中每个缺失值的累积乘积,如下所示:
╔══════╦═════╦════════╦══════╗
║ User ║ Age ║ Salary ║ Rate ║
╠══════╬═════╬════════╬══════╣
║ 1 ║ 21 ║ 20 ║ 1.10 ║
║ 1 ║ 22 ║ 22 ║ 1.10 ║
║ 1 ║ 23 ║ 24.2 ║ 1.12 ║
║ 2 ║ 21 ║ 15 ║ 1.30 ║
║ 2 ║ 22 ║ 19.5 ║ 1.12 ║
║ 3 ║ 21 ║ 25 ║ 1.15 ║
║ 3 ║ 22 ║ 28.75 ║ 1.00 ║
║ 3 ║ 23 ║ 28.75 ║ 1.13 ║
╚══════╩═════╩════════╩══════╝
我尝试了几个选项,例如:
df.groupby('User')['Rate'].cumprod().mul('Salary')
但这些都不起作用。有没有办法避免 for 循环?
慕桂英546537
相关分类