我如何从 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
中展平列表
我有一个包含 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
中展平列表