Код: Выделить всё
import polars as pl
df1 = pl.read_csv("test1.biobank.tsv.gz", separator='\t', schema_overrides={"#chrom": pl.String}, n_threads=8, columns=["#chrom", "pos"], new_columns=["chr", "pos"]).unique()
Код: Выделить всё
df2 = pl.read_csv("test2.biobank.tsv.gz", separator='\t', schema_overrides={"#chrom": pl.String}, n_threads=8, columns=["#chrom", "pos"], new_columns=["chr", "pos"]).unique()
Код: Выделить всё
if not df1.equals(df2):
df = df1.vstack(df2)
del(df1)
del(df2)
Заранее спасибо за помощь
DK
редактировать
Есть другой способ сделать это, используя Polars и DuckDB.
/>
- создать файлы паркета для каждого из входов
Код: Выделить всё
tsv_pattern = "gwas_*.gz"
for fn in glob.glob(tsv_pattern):
print(fn)
parquet_fn = fn.replace(".gz", ".chr_pos.parquet")
df = pl.read_csv(fn, separator='\t', schema_overrides={"#chrom": pl.Utf8}, n_threads=8, columns=["#chrom", "pos"], new_columns=["chr", "pos"]).unique()
df.to_parquet(parquet_fn, compression='zstd')
del(df)
- запустите DuckDB и выполните:
Код: Выделить всё
CREATE TABLE my_table AS SELECT DISTINCT * FROM 'my_directory/*.parquet'
Подробнее здесь: https://stackoverflow.com/questions/700 ... et-of-csvs
Мобильная версия