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

DataFrame活动列数据处理与统计分析问题求助

活动数据清洗与统计问题解决

原始数据与当前问题

用户的原始DataFrame前10行:

full_date   weekday mood    activities
0   2023-07-31  Monday  meh 自炊 | nothing at all | Game
1   2023-07-30  Sunday  meh nothing at all | Game
2   2023-07-29  Saturday    meh pizza | nothing at all | Game | outside food | 
3   2023-07-28  Friday  meh nothing at all | Game | outside food
4   2023-07-27  Thursday    meh nothing at all | Game | argument
5   2023-07-26  Wednesday   meh nothing at all | Game
6   2023-07-25  Tuesday meh 自炊 | nothing at all | Game | outside food
7   2023-07-24  Monday  meh Game
8   2023-07-23  Sunday  meh 自炊 | with a friend | family like gathering | Game | argument
9   2023-07-22  Saturday    meh self teaching | nothing at all | Game

执行清洗拆分操作后:

df["activities"]=df["activities"].astype("string")
df["activities"]=df["activities"].str.split("|")

遇到三个核心问题:

  • 拆分后的活动元素存在首尾空格,strip()无效,replace(" ","")会破坏"nothing at all"这类带空格的活动名
  • 遍历统计当日活动数量时触发TypeError: object of type 'NAType' has no len()
  • 统计负面活动数量的代码无效果

逐个问题解决

1. 修复活动元素的首尾空格问题

不要直接用全局替换,而是拆分后对每个元素单独去除首尾空格,同时过滤空字符串(比如原始数据末尾的|产生的空元素):

# 拆分+去除每个元素首尾空格+过滤空值
df["activities"] = df["activities"].str.split("|").apply(lambda x: [item.strip() for item in x if item.strip()])

处理后,活动列表会变成["自炊", "nothing at all", "Game"]这类格式,既保留了合法空格,又去掉了多余的首尾空格。

2. 统计当日活动数量(解决NAType错误)

放弃手动循环,用pandas矢量化操作,自动处理NA值:

# 直接对列表列求长度,NA值填充为0
df["actions"] = df["activities"].str.len().fillna(0).astype(int)

str.len()可以直接获取每个列表的长度,fillna(0)处理NA类型数据,避免报错,效率远高于手动循环。

3. 统计当日负面活动数量

首先修正负面列表的空格(和处理后的活动元素匹配),然后用apply统计每个列表中属于负面列表的元素个数:

# 修正负面列表,去掉多余空格
negative = ["nothing at all", "Game", "argument", "outside food"]
# 统计每行的负面活动数量
df["negative_acts"] = df["activities"].apply(lambda x: sum(1 for item in x if item in negative) if isinstance(x, list) else 0)

这段代码会遍历每个活动列表,逐个检查元素是否在负面列表中,统计符合条件的数量,同时处理非列表类型的NA数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:29:57