python - Pandas :groupby 相邻的相同元素

标签 python pandas

我需要根据数据框分组

df = pd.DataFrame({'id': [111, 111, 111, 111, 111, 222, 222], 'domain': ['vk.com', 'facebook.com', 'facebook.com', 'twitter.com', 'vk.com', 'facebook.com', 'twitter.com'], 'time': ['2017-01-12', '2017-01-12', '2017-01-12', '2017-01-13', '2017-01-12', '2017-01-14', '2017-01-14'], 'duration': [10, 20, 5, 12, 34, 12, 4]})

我用

df.groupby([df.id, df.domain]).agg({'duration':'sum', 'time': 'first'}).reset_index().reindex(columns=df.columns)

得到

         domain  duration   id        time
0  facebook.com        25  111  2017-01-12
1   twitter.com        12  111  2017-01-13
2        vk.com        44  111  2017-01-12
3  facebook.com        12  222  2017-01-14
4   twitter.com         4  222  2017-01-14

但期望输出是:

         domain  duration   id        time
         vk.com        10  111  2017-01-12
   facebook.com        25  111  2017-01-12
         vk.com        34  111  2017-01-12
    twitter.com        12  111  2017-01-13
   facebook.com        12  222  2017-01-14
    twitter.com         4  222  2017-01-14

我该如何解决?

最佳答案

这是一个没有额外列的替代方案 -

i = df.domain.ne(df.domain.shift()).cumsum()
m = dict(zip(i, df.domain))

df = df.groupby(['id', i], sort=False)\
       .agg({'duration':'sum', 'time': 'first'})\
       .reset_index()
df.domain = df.domain.map(m)

df

    id        domain        time  duration
0  111        vk.com  2017-01-12        10
1  111  facebook.com  2017-01-12        25
2  111   twitter.com  2017-01-13        12
3  111        vk.com  2017-01-12        34
4  222  facebook.com  2017-01-14        12
5  222   twitter.com  2017-01-14         4

关于python - Pandas :groupby 相邻的相同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47966558/

相关文章:

python - 路径 ('accounts/' ,包括(accounts.urls)),NameError : name 'accounts' is not defined

python - 为什么我不能通过 admin/将 jpg 文件上传到我的 Django 应用程序?

python - pandas 合并列并添加原始列

python - Pandas - dataframe groupby - 如何获取多列的总和

python - 使用 DataFrame.to_dict 时 dtype 发生变化

python - 如何循环遍历django查询集数据并在数组而不是字典中设置值

python - 避免在 Seaborn 中绘制缺失值

python - Python 中不可扩展的 Gtk+3 侧边栏,用于类似 TreeView 的界面

Pandas 对逗号分隔值进行分组

python - 如何在 Pandas 数据框中进行包含空格分隔符的列字符串连接?