import pandas as pd
import numpy as np
import os
import sys
str_i = str(sys.argv[1])
npy_file = "img_emb_" + str_i + '.npy'
metadata_file = "metadata_" + str_i + '.parquet'
text_npy = "text_emb_" + str_i + '.npy'
# 加载所有文件
im_emb = np.load(npy_file)
text_emb = np.load(text_npy)
data = pd.read_parquet(metadata_file)
# 合并文件
data = pd.concat([data, pd.DataFrame({"image_embedding" : [*im_emb]}), pd.DataFrame({"text_embedding" : [*text_emb]})], axis=1, copy=False)
# 需要导入 ClickHouse 的列
data = data[['url', 'caption', 'NSFW', 'similarity', "image_embedding", "text_embedding"]]
# 将 np.arrays 转换为列表
data['image_embedding'] = data['image_embedding'].apply(lambda x: x.tolist())
data['text_embedding'] = data['text_embedding'].apply(lambda x: x.tolist())
# 此处需要这个小技巧,因为 caption 有时包含各种引号
data['caption'] = data['caption'].apply(lambda x: x.replace("'", " ").replace('"', " "))
# 将数据导出为 CSV 文件
data.to_csv(str_i + '.csv', header=False)
# 删除原始数据文件
os.system(f"rm {npy_file} {metadata_file} {text_npy}")