# 影刀RPA进阶教程:Pandas在影

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

采集到的数据存进Excel后,经常需要做二次处理:去掉重复行、按价格排序、筛选出销量大于100的商品。

picture.image 在影刀里用循环和条件判断也能做,但数据量一大就慢得要命,代码也乱。

Pandas是Python的数据分析库,处理表格数据又快又简洁。
虽然影刀内置的Python环境不支持直接安装Pandas,但你可以把数据导出成CSV,用外部Python脚本处理;或者把数据传给本地已安装Pandas的Python环境。

picture.image 下面讲一种最实用的方法:影刀采集 → 保存CSV → 外部Python脚本(用Pandas处理) → 影刀读取结果。


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

picture.image

影刀自带的Excel指令适合逐行读写,但不擅长:

  • 按某一列排序(要自己写冒泡排序?太麻烦)
  • 按条件筛选(循环判断,效率低)
  • 去重(需要维护一个已采集列表)

picture.image

  • 多表合并(需要逐行对比)

Pandas一行代码就能搞定:

df_sorted = df.sort_values('价格', ascending=False)  # 按价格降序排序

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/414dc88a8aa84f0e9d8c4986f3b779fa~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781597766&x-signature=8aezcVbdOZpxMmkj2yVfpBVPZtw%3D)
df_filtered = df[df['销量'] > 100]                    # 筛选销量>100
df_unique = df.drop_duplicates(subset=['标题'])       # 按标题去重

影刀限制:影刀内置的Python环境是精简版,不支持pip install pandas。你需要用本地安装的完整Python来跑Pandas脚本。

picture.image


二、准备工作:安装本地Python和Pandas

picture.image 如果你电脑上还没有Python环境,按下面步骤装:

操作步骤:

  1. 从官网下载Python 3.8+版本(推荐3.9)
  2. 安装时勾选“Add Python to PATH”

picture.image 3. 打开命令提示符(cmd),输入:

pip install pandas openpyxl
  1. 等待安装完成

验证是否成功:

# 在cmd里输入 python 进入交互模式
import pandas as pd
print(pd.__version__)
# 不报错说明成功

影刀版本差异:影刀创业版/企业版支持“调用本地程序”指令,可以用它来执行外部Python脚本。社区版也可以,但需要配置路径。


三、实战案例1:对采集结果去重

场景: 影刀采集了1000条商品数据,存到products.xlsx,但因滚动加载可能有重复标题。
你需要按“标题”列去重,保留第一次出现的记录。

影刀流程:

  1. 采集完成后,保存Excel文件到固定路径
  2. 用“运行命令行”或“调用外部程序”执行Python脚本
  3. 脚本用Pandas读取Excel、去重、保存新文件
  4. 影刀读取去重后的文件继续后续操作

picture.image 外部Python脚本(去重.py):

import pandas as pd

# 读取影刀生成的Excel
df = pd.read_excel('C:/采集数据/products.xlsx', engine='openpyxl')

# 按标题列去重,保留第一条
df_unique = df.drop_duplicates(subset=['标题'], keep='first')

# 输出去重后的行数
print(f"去重前:{len(df)}行,去重后:{len(df_unique)}行")

# 保存到新文件
df_unique.to_excel('C:/采集数据/products_deduped.xlsx', index=False, engine='openpyxl')

在影刀里调用(用“运行命令行”指令):

# 指令:运行命令行
# 命令:python C:/采集数据/去重.py
# 等待完成后再读取 products_deduped.xlsx

影刀指令精确名称:“运行命令行”在“程序工具”分类下。可以执行任何系统命令。


四、实战案例2:按价格排序并取前10名

场景: 采集了商品和价格,想找出最贵的10个商品。
Pandas排序 + head() 一行搞定。

外部Python脚本(排序筛选.py):

import pandas as pd

df = pd.read_excel('products.xlsx')

# 确保价格列是数字类型(如果是文本带¥符号,先清洗)
df['价格'] = df['价格'].astype(str).str.replace('¥', '').str.replace('元', '').astype(float)


![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/7f8a1c0c12994063899db114831dcb5b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781597766&x-signature=md2%2FrtwHv%2BmhpZcxVGyWaVmLbyQ%3D)
# 按价格降序排序
df_sorted = df.sort_values('价格', ascending=False)

# 取前10个
top10 = df_sorted.head(10)

# 保存
top10.to_excel('top10_products.xlsx', index=False)

进阶:按价格和销量综合排序

# 先按销量降序,再按价格降序
df_sorted = df.sort_values(['销量', '价格'], ascending=[False, False])

五、实战案例3:筛选出符合条件的行

场景: 只想保留销量大于1000且价格低于500元的商品。

脚本:

import pandas as pd

df = pd.read_excel('products.xlsx')

# 筛选条件
df_filtered = df[(df['销量'] > 1000) & (df['价格'] < 500)]

# 或者用query方法
df_filtered = df.query('销量 > 1000 and 价格 < 500')

df_filtered.to_excel('filtered_products.xlsx', index=False)

多条件组合:

# 销量在100-500之间,或者店铺名包含“旗舰店”
df_filtered = df[(df['销量'].between(100, 500)) | (df['店铺'].str.contains('旗舰店'))]

注意:用&(与)和|(或)时,每个条件要加括号。


六、实战案例4:合并多个Excel文件

场景: 分多次采集,每次存一个Excel文件(如page1.xlsxpage2.xlsxpage3.xlsx)。
你想把所有文件合并成一个总表。

脚本:

import pandas as pd
import glob

# 获取所有page开头的xlsx文件
files = glob.glob('C:/采集数据/page*.xlsx')

# 创建一个空的DataFrame用于存放合并结果
df_all = pd.DataFrame()

for file in files:
    df = pd.read_excel(file)
    df_all = pd.concat([df_all, df], ignore_index=True)

# 去重(可选)
df_all = df_all.drop_duplicates(subset=['标题'])

# 保存
df_all.to_excel('merged_all.xlsx', index=False)

如果列名不一致: 先统一列名,或者用pd.concatjoin='inner'只保留共有的列。


七、在影刀中封装成子流程(推荐)

你可以把Pandas处理封装成一个独立的子流程,输入原始Excel路径,输出处理后的Excel路径。

子流程设计:

  • 输入参数:【原始文件路径】【处理类型】(去重/排序/筛选)
  • 输出参数:【结果文件路径】

子流程内部:

  1. 根据【处理类型】拼接要执行的Python脚本内容
  2. 将脚本内容写入临时.py文件
  3. 调用“运行命令行”执行该脚本
  4. 返回结果文件路径

但更简单的方式:把常用处理写成固定的几个脚本,根据场景调用不同的脚本。
比如dedup.pysort_by_price.pyfilter_by_sales.py,直接调用。

影刀特有功能:可以用“写入文件”指令动态生成Python脚本内容,然后执行。这样不需要提前创建脚本文件。


八、常见问题速查

问题解决方法
影刀里无法import pandas影刀内置Python不支持。必须用外部Python
运行命令行报错“python不是内部命令”安装Python时没加PATH。重新安装勾选“Add to PATH”,或者用绝对路径(如C:\Python39\python.exe
pandas读取Excel报错安装openpyxlpip install openpyxl
读取时数字变成文本(如价格带¥符号)df['价格'].astype(str).str.replace('¥','').astype(float)转换
处理大文件(几十万行)时内存不足chunksize参数分块读取;或者换用dask
脚本执行完如何通知影刀继续脚本执行结束后会继续运行影刀的下一条指令。可以用“等待文件存在”指令等待结果文件生成
不想装Python怎么办用影刀自带的“数据去重”“表格排序”指令,但功能有限、速度慢

九、一个完整的影刀+Pandas工作流示例

# 影刀主流程
# 1. 采集数据,保存为 raw_data.xlsx
调用子流程(采集商品)  # 内部最终保存Excel

# 2. 调用外部Python脚本用Pandas处理
【脚本路径】 = "C:/scripts/process.py"
【原始文件】 = "C:/data/raw_data.xlsx"
【输出文件】 = "C:/data/processed.xlsx"

# 用“写入文件”生成脚本(也可以提前写好)
写入文本文件(【脚本路径】, 内容="""
import pandas as pd
df = pd.read_excel(r'""" + 【原始文件】 + """')
df = df.drop_duplicates(subset=['标题'])
df = df.sort_values('价格', ascending=False)
df.to_excel(r'""" + 【输出文件】 + """', index=False)
""")

# 执行脚本
运行命令行(f"python {【脚本路径】}")

# 3. 等待处理完成
等待文件存在(【输出文件】, 超时时间30)

# 4. 读取处理后的数据,继续后续操作
打开Excel(【输出文件】) → 【最终数据】

推荐资源

  • Pandas官方中文文档:pandas.pydata.org(有10分钟入门教程)
  • 在线练习:kaggle.com 上的Pandas课程(免费)
  • 影刀社区搜索“Pandas”,有用户分享的脚本模板
  • 推荐IDE:VS Code + Python插件,写Pandas脚本有智能提示

建议:先在本地Jupyter Notebook里写好Pandas代码,测试无误后再封装到影刀的“运行命令行”中。


作者:林焱

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

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