使用Pandas统计DataFrame每行Participants列的参与者人数
如何为DataFrame新增一列统计Participants列的参与者数量?
根据你提供的invoice_df数据,Participants列存在两种格式:部分是原生列表对象,部分是被引号包裹的字符串形式伪列表。以下是对应解决方案:
情况1:Participants列已为列表类型
如果Participants存储的是Python列表,直接用apply(len)统计每行列表的长度即可:
invoice_df['Participant_Count'] = invoice_df['Participants'].apply(len)
情况2:Participants列为字符串类型
若Participants是类似['David Bishop']或带双引号的"['Anthony Emerson' ...]"格式的字符串,需要先将其解析为列表,再统计数量:
- 导入
ast模块用于安全解析字符串为列表 - 处理字符串并转换为列表
- 新增统计列
代码示例:
import ast # 处理字符串格式的伪列表,先去除可能的外层双引号,再解析为列表 invoice_df['Participants'] = invoice_df['Participants'].apply( lambda x: ast.literal_eval(x.strip('"')) if isinstance(x, str) else x ) # 新增参与者数量列 invoice_df['Participant_Count'] = invoice_df['Participants'].apply(len)
执行后,invoice_df会新增Participant_Count列,对应每行的参与者人数,比如第一行值为1,第六行值为3,第五行值为2,以此类推。
内容的提问来源于stack exchange,提问作者c200402
相关产品推荐
相关产品推荐

