You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas将列拆分为行:处理含date与mentions列的DataFrame

解决DataFrame拆分mentions列并按日期统计提及次数的问题

别着急,这个问题确实很常见,用Pandas的几个内置方法就能轻松搞定!我先帮你拆解步骤,从拆分mentions列到最终统计,一步步来:

第一步:先明确原始数据结构(模拟示例)

假设你的原始DataFrame是这样的(mentions列是逗号分隔的字符串):

import pandas as pd

df = pd.DataFrame({
    'date': ['2023-10-01', '2023-10-01', '2023-10-02'],
    'mentions': ['Alice,Bob', 'Charlie', 'Bob,Alice']
})

第二步:拆分mentions列

核心用explode()方法,它能把列表类型的列拆成多行。如果你的mentions是字符串,先转成列表:

# 把字符串拆成列表,再拆分多行
df_split = df.assign(mentions=df['mentions'].str.split(',')).explode('mentions')

拆分后就得到你想要的格式:

datementions
2023-10-01Alice
2023-10-01Bob
2023-10-01Charlie
2023-10-02Bob
2023-10-02Alice

⚠️ 小细节处理:

  • 如果mentions里有空格(比如'Alice, Bob'),拆分后记得去空格:
    df_split = df.assign(mentions=df['mentions'].str.split(',').apply(lambda x: [s.strip() for s in x])).explode('mentions')
    
  • 如果有空值,拆分后用dropna()去掉空行:
    df_split = df.assign(mentions=df['mentions'].str.split(',')).explode('mentions').dropna(subset=['mentions'])
    

第三步:按日期统计提及次数

拆分完成后,用groupby就能轻松统计了:

# 按日期+提及项分组,统计次数
final_df = df_split.groupby(['date', 'mentions']).size().reset_index(name='count')

得到的结果是:

datementionscount
2023-10-01Alice1
2023-10-01Bob1
2023-10-01Charlie1
2023-10-02Alice1
2023-10-02Bob1

如果想要宽表格式(每个提及项作为列),可以用pivot转置:

final_pivot = final_df.pivot(index='date', columns='mentions', values='count').fillna(0).astype(int)

结果如下:

mentionsAliceBobCharlie
2023-10-01111
2023-10-02110

这样就完全实现你的需求啦!

内容的提问来源于stack exchange,提问作者whateveryousayiam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:44:59