我如何从 csv 文件中推断出候选密钥

how can I infer the candidate key from csv files

我有一个包含 csv 文件的文件夹,其中包含以下文件: car.csv、person.csv、student.csv... 每个文件都有列。

我正在尝试读取列值并将它们放入列表中。

这是我的职能:

import pandas
from itertools import chain, combinations
def key_options(items):
        print(7,items)
        return chain.from_iterable(combinations(items, r) for r in range(1, len(items)+1) )

def primary_key_discovery(data_path):
    csv_files = glob.glob(os.path.join(data_path, "*.csv"))
    for f in csv_files:
        dataframes = pd.read_csv(f)
        for candidate in key_options(list(dataframes)[1:]):
            deduped = dataframes.drop_duplicates(candidate)
            if len(deduped.index) == len(dataframes.index):
                print(f,','.join(candidate))
print(primary_key_discovery('Data1/'))

这个函数给我这样的输出 Data1\vehicle.csv model,price,engine-size 我想打印列值,例如 model:camery,altima,aclass,....

假设您将候选键存储在列表中而不只是打印出键,您可以通过展平键列表打印出唯一值,选择唯一键,然后选择唯一值来自该列的 pandas 数组。

Here is an example 如何在 python

中展平列表