"""重建引入的 69 个重复键行：是完全同值重复还是字段冲突？用法: python code/chk_baseline_dupkeys.py"""
import pandas as pd
d = pd.read_csv('backtest_zt_full/strength_baseline.csv')
KEY = ['code', 'pool', 'buy_date', 'sell_date']
dups = d[d.duplicated(KEY, keep=False)].sort_values(KEY)
print("重复键涉及行数:", len(dups), "| 键数:", dups.drop_duplicates(KEY).shape[0])
print("同键内除键列外是否完全相同:",
      bool(dups.drop_duplicates().shape[0] == dups.shape[0]) is False,
      "| 去全列重复后行数:", dups.drop_duplicates().shape[0])
cols = [c for c in d.columns if c not in KEY]
g = dups.groupby(KEY)[cols].nunique()
conflict = (g > 1).any(axis=1)
print("有字段冲突的键数:", int(conflict.sum()))
if conflict.any():
    print(g[conflict].head(5).to_string())
print(dups.head(6).to_string())
