pandas 如何合并相似的连续行并添加相应的数值

chy5wohz  于 2023-02-28  发布在  其他
关注(0)|答案(1)|浏览(100)

我有一个数据框,如下所示:

然后我想合并连续出现的相同LITHO_UNIT,并添加相应的THICKNESS & RECOVERY值。结果应该是:

如何在Python Pandas中高效地完成这些工作。

6tdlim6h

6tdlim6h1#

如果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

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

相关问题