多维表格我就想删除重复项怎么那么难啊
用ai写了半天的Python脚本,都不能通过电话去重数据,怎么弄
import pandas as pd
import re
try:
# 读取数据,不指定 field 参数,自动包含 _rid
df = dbt(sheet_name="Sheet1")
except Exception as e:
print(f"数据读取失败: {str(e)}")
exit()
# 数据验证
if df.empty:
print("警告:未获取到任何数据")
exit()
# 检查 _rid 是否存在
if '_rid' not in df.index.names:
print("错误:未获取到记录ID(_rid),请检查字段设置")
exit()
# 数据预处理
try:
# 过滤无效电话(中国大陆手机号格式)
phone_pattern = re.compile(r'^1[3-9]\d{9}$')
valid_mask = df['电话'].apply(lambda x: phone_pattern.match(str(x)) is not None)
valid_df = df[valid_mask]
if len(valid_df) < len(df):
print(f"警告:过滤了 {len(df) - len(valid_df)} 个无效电话")
df = valid_df
except Exception as e:
print(f"数据处理错误: {str(e)}")
exit()
# 数据处理
try:
# 按最后修改时间降序排序
df_sorted = df.sort_values('最后修改时间', ascending=False)
# 按电话去重,保留最新记录(使用 _rid 作为唯一标识)
df_deduplicated = df_sorted.drop_duplicates(subset='电话', keep='first')
# 更新状态字段
df_deduplicated['状态'] = '待岗'
# 仅保留状态字段和 _rid 作为索引
df_deduplicated = df_deduplicated[['状态']]
except Exception as e:
print(f"数据处理错误: {str(e)}")
exit()
# 数据回写前验证
print("即将更新的数据预览:")
print(df_deduplicated.head())
print("数据形状:", df_deduplicated.shape)
# 数据回写
try:
update_dbt(df_deduplicated)
print(f"成功更新 {len(df_deduplicated)} 条记录")
# 手动测试单条更新
sample_rid = df_deduplicated.index[0]
print(f"手动测试更新 _rid 为 {sample_rid} 的记录")
update_dbt(pd.DataFrame({"状态": ["测试成功"]}, index=[sample_rid]))
print("单条测试成功,请检查多维表数据")
except Exception as e:
print(f"数据回写失败: {str(e)}")
exit()
创作者俱乐部成员
创作者俱乐部成员