csv 如何在现有的极坐标系上重新推断数据?

qnakjoqk  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(31)

我有以下问题:
我有一个csv文件,在某些行中有错误的值(字符串而不是整数)。为了补救,我将其读入polars并过滤该polrame。
为了能够读取它,我必须设置infer_schema_length = 0,因为否则读取将失败。这将把每一列都作为字符串读取。我如何重新推断正确的嵌套框架的数据类型/模式?我想尽量避免单独设置每一列,因为有很多。
可惜我不能编辑CSV本身。

ids_df = pl.read_csv(dataset_path, infer_schema_length=0)

filtered_df = ids_df.filter(~(pl.col("Label") == "Label"))

filtered_df.dtypes

[Utf8,
 Utf8,
 Utf8,
 Utf8,
 Utf8,
 Utf8,
 Utf8,
 Utf8,
 Utf8,
 Utf8,
 ...

字符串
谢谢你的帮忙。

7vhp5slm

7vhp5slm1#

我不认为Polars有这个功能,但我想我找到了一个有效的方法来解决你的问题:

from io import BytesIO
import polars as pl
dataset_path = "./test_data.csv"
ids_df = pl.read_csv(dataset_path, infer_schema_length=0)
print("ids_df",ids_df)

filtered_df = ids_df.filter(~(pl.col("Label") == "Label"))
print("filtered_df", filtered_df)

# Save data to memory as a IO stream
bytes_io = BytesIO()
filtered_df.write_csv(bytes_io)

# Read from IO stream with infer_schema_lenth != 0
new_df = pl.read_csv(bytes_io)
print("new_df", new_df)
bytes_io.close()

字符串


的数据

相关问题