下面是一个按组将多个首个和末个非NA值相乘的解决方法,使用Python中的pandas库来实现:
import pandas as pd
import numpy as np
# 创建示例数据
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'B'],
'Value': [1, np.nan, 3, 4, np.nan, 6]}
df = pd.DataFrame(data)
# 按组计算首个和末个非NA值的乘积
result = df.groupby('Group')['Value'].apply(lambda x: x.dropna().iloc[0] * x.dropna().iloc[-1])
print(result)
输出结果为:
Group
A 3.0
B 24.0
Name: Value, dtype: float64
这段代码中,首先创建了一个包含组和值的DataFrame。然后,通过groupby
方法按组对值进行分组。接下来,使用apply
方法对每个组的值进行操作。在这里,lambda
函数中的x
代表每个组的值。通过dropna
方法删除组中的NA值,并使用iloc[0]
和iloc[-1]
来获取首个和末个非NA值。最后,将首个和末个非NA值相乘得到结果。
上一篇:按组将第二行除以第一行