【问题标题】:How to merge similar consecutive rows and add the corresponding numerical values如何合并相似的连续行并添加相应的数值
【发布时间】:2023-02-22 14:10:27
【问题描述】:

我有一个像这样的数据框: df

然后我想合并连续发生的相同 LITHO_UNIT 并添加相应的 THICKNESS & RECOVERY 值。结果应该: df_new

请建议我如何在 Python Pandas 中有效地完成此操作。

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多