文档备案控制台
免费开始使用

影刀RPA进阶教程:Pandas在影刀中的常用操作(筛选/排序/合并/去重)

采集到的Excel数据动辄上千行,要用影刀原生指令做筛选排序,得写一大堆循环和判断。 用Python的Pandas库,几行代码搞定数据清洗,再传回影刀写入表格。

核心方法:在“Python代码”指令中导入pandas,对数据做筛选、排序、合并、去重后,输出新表格。

一、为什么要在影刀里用Pandas?

操作影刀原生指令Pandas代码量

picture.image | 筛选价格>50的行 | 循环+判断+新列表 | 1行 | | 按销量排序 | 循环+排序算法 | 1行 | | 根据商品名去重 | 循环+记录已出现 | 1行 | | 两张表合并 | 复杂循环拼接 | 1行 |

picture.image | 分组统计平均值 | 嵌套循环 | 1行 |

前提: 你需要先安装pandas库(在影刀Python环境里)。社区版用户第一次使用时可能需安装,创业版/企业版一般已预装。


picture.image

二、Pandas基础:影刀中的安装与使用

安装pandas(如报错“No module named pandas”)

picture.image

  1. 打开影刀安装目录下的Python(或系统Python)
  2. 执行 pip install pandas openpyxl
  3. 或者直接在影刀的Python代码指令里写 import subprocess; subprocess.run(['pip','install','pandas'])(不推荐,易超时)

社区版注意: 首次安装需要额外时间,建议在本地调试环境先装好。

picture.image

基础模板

# Python代码指令:Pandas处理数据

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/01e6c44172404f668ece148722cc4899~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782004247&x-signature=udTUweBNTZ9%2Fa%2Bb5mL1pLWGu%2F%2Fw%3D)
# 输入参数:data(影刀传入的二维列表,如从Excel读取的区域数据)
# 输出参数:output_处理后数据(二维列表)

import pandas as pd


![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/73b49b4ccd854a01ae27eae858aa5852~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782004247&x-signature=AtNwEP%2BbCQyebiYR6mFzcnG4Fro%3D)
# 影刀传入的列表转DataFrame
df = pd.DataFrame(data[1:], columns=data[0])  # data[0]是表头,data[1:]是数据行

# 在这里写处理逻辑
# 例如:筛选价格>50的行
df_filtered = df[df['价格'] > 50]

# 转回二维列表(供影刀写入Excel)
output_处理后数据 = [df_filtered.columns.tolist()] + df_filtered.values.tolist()

注意: 影刀从Excel读到的区域数据格式是 [[表头行], [数据行1], [数据行2]...],第一行是表头。


三、实战1:筛选(价格>50且销量>1000)

采集了1000条商品数据,只要价格高于50且销量大于1000的商品。

# Python代码指令:筛选数据
# 输入:原始数据(二维列表,第一行是表头)
# 输出:output_筛选后数据

import pandas as pd

# 构建DataFrame
df = pd.DataFrame(原始数据[1:], columns=原始数据[0])

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c570b98d04324cfe8091be7d5fc15a00~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782004247&x-signature=q64DacGt2IWUzSuJ2kDX3njoEuA%3D)

# 筛选条件:价格>50 且 销量>1000
# 假设表头有“价格”和“销量”列
df_result = df[(df['价格'] > 50) & (df['销量'] > 1000)]

# 转回列表
output_筛选后数据 = [df_result.columns.tolist()] + df_result.values.tolist()

影刀调用后,用“写入行数据到表格”把 {筛选后数据} 写入新Excel即可。


四、实战2:排序(按销量降序)

# Python代码指令:按销量排序
import pandas as pd

df = pd.DataFrame(原始数据[1:], columns=原始数据[0])

# 按“销量”列降序排序(ascending=False)
df_sorted = df.sort_values(by='销量', ascending=False)

output_排序后数据 = [df_sorted.columns.tolist()] + df_sorted.values.tolist()

多列排序: df.sort_values(by=['销量', '价格'], ascending=[False, True])

picture.image

picture.image

五、实战3:去重(根据商品标题去重,保留第一个)

同一个商品可能被采集多次,需要去重。

# Python代码指令:根据“商品标题”去重
import pandas as pd

df = pd.DataFrame(原始数据[1:], columns=原始数据[0])

# 根据“商品标题”列去重,保留第一次出现的行
df_unique = df.drop_duplicates(subset=['商品标题'], keep='first')

output_去重后数据 = [df_unique.columns.tolist()] + df_unique.values.tolist()

参数说明:

  • keep='first' 保留第一个
  • keep='last' 保留最后一个
  • keep=False 删除所有重复项

六、实战4:合并两张表(类似Excel VLOOKUP)

有两张表:商品表(商品ID、标题)、价格表(商品ID、价格)。合并成一张完整表。

# Python代码指令:合并两张表
import pandas as pd

# 假设从两张Excel分别读取,存入“商品表”和“价格表”
df_product = pd.DataFrame(商品表[1:], columns=商品表[0])
df_price = pd.DataFrame(价格表[1:], columns=价格表[0])

# 按“商品ID”左连接
df_merged = pd.merge(df_product, df_price, on='商品ID', how='left')

output_合并后数据 = [df_merged.columns.tolist()] + df_merged.values.tolist()

连接方式:

  • how='inner' 只保留两表都有的
  • how='left' 保留左表所有
  • how='right' 保留右表所有
  • how='outer' 保留所有

七、实战5:分组统计(按店铺计算销量总和)

# Python代码指令:按店铺分组统计销量
import pandas as pd

df = pd.DataFrame(原始数据[1:], columns=原始数据[0])

# 按“店铺名”分组,计算“销量”总和和“价格”平均值
df_group = df.groupby('店铺名').agg({
    '销量': 'sum',
    '价格': 'mean'
}).reset_index()

output_统计结果 = [df_group.columns.tolist()] + df_group.values.tolist()

其他聚合函数: 'count', 'min', 'max', 'std'


八、实战6:添加计算列(利润率 = (价格-成本)/成本)

# Python代码指令:添加计算列
import pandas as pd

df = pd.DataFrame(原始数据[1:], columns=原始数据[0])

# 假设有“价格”和“成本”列,计算利润率
df['利润率'] = (df['价格'] - df['成本']) / df['成本']
# 格式化为百分比(可选)
df['利润率'] = df['利润率'].apply(lambda x: f"{x:.1%}")

output_带计算列数据 = [df.columns.tolist()] + df.values.tolist()

九、影刀+Pandas完整流程示例

# 影刀主流程

# 1. 读取原始数据
Excel Workbook打开:文件"原始数据.xlsx" → 工作簿
读取区域数据到列表:起始"A1",存入"原始数据"
Excel Workbook关闭

# 2. Python代码指令:Pandas清洗
# 输入:原始数据(二维列表)
# 输出:清洗后数据

import pandas as pd

df = pd.DataFrame(原始数据[1:], columns=原始数据[0])

# 删除空行
df = df.dropna(subset=['商品标题'])

# 筛选价格在10-100之间的
df = df[(df['价格'] >= 10) & (df['价格'] <= 100)]

# 按销量降序
df = df.sort_values(by='销量', ascending=False)

# 去重(相同标题只留一个)
df = df.drop_duplicates(subset=['商品标题'])

# 添加排名列
df['排名'] = range(1, len(df)+1)

output_清洗后数据 = [df.columns.tolist()] + df.values.tolist()

# 3. 写入结果
Excel Workbook打开:文件"清洗结果.xlsx",自动创建 → 结果工作簿
# 注意:清洗后数据第一行是表头,需要逐行写入
循环列表:清洗后数据,循环变量=行
    写入行数据到表格:行数据={行}
Excel Workbook保存并关闭

十、Pandas在影刀中的限制与注意事项

限制说明解决办法
大数据量内存10万行以上可能卡顿分批处理或用数据库
安装问题部分环境未预装pandas提前用pip安装,或联系管理员
中文字段名表头含中文没问题直接用中文列名,如df['价格']
数据类型影刀传入的数字可能是字符串先用pd.to_numeric()转换
运行时长Pandas处理耗时较长社区版注意时长,先在小数据集测试

常见问题速查

问题原因解决方法
ModuleNotFoundError: No module named 'pandas'未安装pandas运行 pip install pandas
列名取不到表头有空格或特殊字符打印 df.columns 查看实际列名
数字列排序变成字符串排序列数据类型是objectdf['价格'] = pd.to_numeric(df['价格'])
输出后Excel格式错乱转列表时索引未重置df.reset_index(drop=True)
内存不足报错数据量太大chunksize 分块读取

推荐资源

  • Pandas官方文档:pandas.pydata.org(有中文版)
  • 影刀官方帮助中心:搜索“Pandas”有示例流程下载
  • 我的经验:学会Pandas的这5个操作(筛选、排序、去重、合并、分组),能解决90%的数据清洗需求,不用学太深

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论