我正在使用以下内容阅读Pandas Dataframe:
df = pd.read_csv('../table.csv.gz', nrows=10000,
index_col=False, engine='c',
true_values=[b'1'], false_values=[b'0'],
usecols=usecols, dtype=dtype)
我收到以下警告:
DtypeWarning: Columns (5,2397,2402,2449) have mixed types. Specify dtype option on import or set low_memory=False.
但是这些列的标题名称存在于dtype
中。所有这些列的指定类型都是np.bool
,csv文件中这些列中唯一的值是'1'
和''
(逗号之间没有任何内容。这会给出一个列键入object
,并在调用bool
时变为类型DataFrame.fillna
。
此外,当我编辑CSV文件以删除除了有问题的列之外的所有列以尝试查明警告的来源时,警告将停止发生。
发生了什么事?这是read_csv
中的错误吗?我应该忽略这个警告吗?
答案 0 :(得分:1)
所以我猜你的问题是当你在阅读文件时,你实际上有两个不同类型的值为这些列:np.bool('1')和np.nan(''),所以实际上如果你是告诉它将列视为np.bool它不会这样做。我想你可以尝试使用相同的只是将false_values参数更改为false_values = [b'']
23
6
2
6
2
1
2
如果这不起作用,你也可以这样做:
df = pd.read_csv('../table.csv.gz', nrows=10000,
index_col=False, engine='c',
true_values=[b'1'], false_values=[b''],
usecols=usecols, dtype=dtype)
现在当你读回来时,你实际上应该有0。
df.loc[:,[5,2397,2402,2449]].fillna('0',inplace = True)
df.to_csv('../table.csv.gz')