在日期和名称的多行上组合数据框中的值

Combine values in dataframe on multiple rows on date and name

我有一个数据框数据集,我想在其中合并一些数据。目前我已经尝试使用 .groupby().sum() 但我得到的结果不是我所期望的。

我的数据集 atm 如下所示:

date value name
2022-01-19 27 podcast_processed
2022-01-19 25 podcast_processed
2022-01-19 23 podcast_processed
2022-01-19 23 podcast_processed
2022-01-19 23 n_known_errors
2022-01-19 23 n_known_errors
2022-01-19 23 n_known_errors
2022-01-19 23 n_known_errors
2022-01-19 0 n_unknown_errors
2022-01-19 0 n_unknown_errors
2022-01-19 2 n_unknown_errors
2022-01-19 0 n_unknown_errors

Image of dataset

我想要实现的是合并不同名称的值。如何做到这一点?

因此数据将是(以适当的数据帧格式):

date value name
2022-01-19 98 podcast_processed
2022-01-19 69 n_known_errors
2022-01-19 2 n_unknown_errors

我的代码:

from xxx.input import get_automation_metrics

def graph_visual_data(script_title):
    data = get_automation_metrics(script_title)
    data = data[data.name.isin(['podcast_processed', 'n_unknown_errors', 'n_known_errors'])][['date','value','name']]
    data.date = data.date.dt.date
    data.value = data.value.astype(int)

    data = data.groupby(['name','date'])['value'].sum()

    fig = alt.Chart(data).mark_bar(size=10).encode(
        x='date',
        y='value',
        color='name',
        tooltip=['name', 'value']
    ).interactive()
    st.altair_chart(fig, use_container_width=True)

如果可能的话,我需要从 podcast_processed 的总和中减去 n_unknown_errorsn_known_errors 的组合值。所以数据看起来像(以适当的数据帧格式):

date value name
2022-01-19 27 podcast_processed
2022-01-19 69 n_known_errors
2022-01-19 2 n_unknown_errors

默认情况下,groupby 上的聚合将分组列放入索引中,它们不再是普通 列。

您可以通过 reset_index:

修复它
data = data.groupby(['date', 'name']).sum().reset_index()

或用as_index=False阻止它:

data = data.groupby(['date', 'name'], as_index=False).sum()

两种方式都会得到:

         date               name  value
0  2022-01-19     n_known_errors     92
1  2022-01-19   n_unknown_errors      2
2  2022-01-19  podcast_processed     98