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

如何按分隔符拆分列以使用.value_counts()统计艺术家频次?

解决艺术家列拆分与频次统计问题

错误原因分析

  1. 第一个报错'function'对象没有split属性:
    你在apply的lambda里引用了artistsbypopularitylist.split(","),这个变量并非当前行的字符串列值(大概率是个函数或其他非字符串对象),自然没有split方法。而且用apply处理字符串列效率远不如pandas内置的str方法。

  2. 第二个报错列长度必须与key一致:
    str.split(',',expand=True)会根据数据中艺术家数量最多的行生成对应列数(比如某行有3位艺术家就会生成3列),但你只指定了['Artist1','Artist2']两列,列数不匹配导致报错。

正确实现代码

直接用pandas的字符串方法拆分后转一维数组,再统计频次:

# 按逗号拆分艺术家列,展开为多列
split_artists = alldata['Artist Name(s)'].str.split(',', expand=True)
# 将多列转为一维Series,同时去除艺术家名字前后的空格,过滤空值
all_artists = split_artists.stack().str.strip().dropna()
# 统计每位艺术家的出现频次
artist_frequency = all_artists.value_counts()
# 输出结果
print(artist_frequency)

代码说明

  • str.split(',', expand=True):把每个单元格的字符串按逗号拆分成多列,自动适配最多的艺术家数量。
  • stack():将多列的DataFrame转为一维Series,所有艺术家名字都在同一列。
  • str.strip():去除拆分后名字前后的空格(比如", The Weeknd"会变成"The Weeknd")。
  • dropna():过滤拆分后可能出现的空值(比如部分行艺术家数量少,拆分后会有NaN)。
  • value_counts():统计每个艺术家的出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:44:50