【发布时间】:2023-02-22 14:10:27
【问题描述】:
我有一个像这样的数据框: df
然后我想合并连续发生的相同 LITHO_UNIT 并添加相应的 THICKNESS & RECOVERY 值。结果应该: df_new
请建议我如何在 Python Pandas 中有效地完成此操作。
【问题讨论】:
我有一个像这样的数据框: df
然后我想合并连续发生的相同 LITHO_UNIT 并添加相应的 THICKNESS & RECOVERY 值。结果应该: df_new
请建议我如何在 Python Pandas 中有效地完成此操作。
【问题讨论】:
如果 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
【讨论】: