我有一个数据框,如下所示:
然后我想合并连续出现的相同LITHO_UNIT,并添加相应的THICKNESS & RECOVERY值。结果应该是:
如何在Python Pandas中高效地完成这些工作。
6tdlim6h1#
如果LITHO_UNIT的当前名称与前一行不同,则开始一个新组。您可以为每个组计算sum:
LITHO_UNIT
sum
# Create groups g = df['LITHO_UNIT'].ne(df['LITHO_UNIT'].shift()).cumsum() # Compute sum on numeric columns out = df.select_dtypes('number').groupby(g).sum().reset_index()
输出:
>>> out THICKNESS RECOVERY 0 1 1 1 3 3 2 3 3 >>> df LITHO_UNIT THICKNESS RECOVERY 0 CZ 1 1 1 CY 1 1 2 CY 2 2 3 CZ 3 3
如果要对列应用不同的数学运算,请使用agg:
agg
out = (df.groupby(g, as_index=False) .agg({'LITHO_UNIT': 'first', 'THICKNESS': 'sum', 'RECOVERY': 'mean'})) print(out) # Output LITHO_UNIT THICKNESS RECOVERY 0 CZ 1 1.0 1 CY 3 1.5 2 CZ 3 3.0
1条答案
按热度按时间6tdlim6h1#
如果
LITHO_UNIT
的当前名称与前一行不同,则开始一个新组。您可以为每个组计算sum
:输出:
如果要对列应用不同的数学运算,请使用
agg
: