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

通过PowerShell处理CSV文件:按用户ID统计位置出现次数

按ID分组统计不同地点的出现次数并格式化输出

需求说明

现有包含Timestamp、Location、ID、Name四列的CSV文件,需按用户ID分组,统计每个ID在不同Location的出现次数,并输出指定格式的结果(同一ID的多行记录中,仅第一行显示ID,后续行ID列留空)。

示例CSV数据

Timestamp           Location    ID      Name
01/01/2024 00:02    London      171320  Derek Peters
01/02/2024 00:02    London      114554  Jon Adams
01/02/2024 01:02    Manchester  680283  Nigel Terry
02/02/2024 00:02    London      210144  Jenny Smith
03/02/2024 00:02    London      171320  Derek Peters
03/02/2024 00:02    Manchester  265712  Amanda Lort
04/02/2024 00:02    Manchester  114554  Jon Adams
05/02/2024 00:02    Manchester  680283  Nigel Terry
06/02/2024 00:02    Coventry    171320  Derek Peters
06/02/2024 00:02    Coventry    206665  Stevie Eddies
07/02/2024 00:02    Coventry    171320  Derek Peters

期望输出格式

ID        Location    Count
171320    London      2
          Coventry    2
114554    London      1
          Manchester  1
680283    Manchester  2
210144    London      1
265712    Manchester  1
206665    Coventry    1

解决方案(Python + Pandas)

使用Pandas库可高效完成分组统计和格式调整,以下是完整实现代码:

import pandas as pd

# 读取CSV文件,若为逗号分隔可去掉delim_whitespace参数
df = pd.read_csv('your_file.csv', delim_whitespace=False)

# 按ID和Location分组,统计出现次数
count_df = df.groupby(['ID', 'Location']).size().reset_index(name='Count')

# 处理ID列格式:同一ID的后续行设为空字符串
count_df['ID'] = count_df['ID'].where(count_df['ID'] != count_df['ID'].shift(), '')

# 格式化输出,设置列宽保证对齐
print(count_df.to_string(index=False, col_space=[8, 12, 6], justify='left'))

代码说明

  1. 读取CSV:根据文件实际分隔符调整参数,逗号分隔直接用pd.read_csv('your_file.csv')即可。
  2. 分组统计:通过groupby按ID和地点组合分组,size()统计次数,reset_index将结果转为标准DataFrame格式。
  3. 格式调整:用shift()对比当前行与上一行的ID值,相同则清空当前行ID,实现同一ID仅首行显示的效果。
  4. 对齐输出:通过to_string关闭索引显示,设置列宽确保输出与期望格式对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:50:01