Если метод pandas ' read_csv возвращает пустую строку для пропущенного значения, тогда велика вероятность, что ваш CSV-файл использует разделители запятых в «стиле пунктуации» (с пробелом после запятой) вместо «строгого»"разделители запятых (без лишних пробелов).
Рассмотрим" строгий "файл CSV
1,,price unknown
2,29.95,standard price
Код панд
df = pd.read_csv(r"C:\Users\Gord\Desktop\no_spaces.csv", header=None, prefix='column')
print(df)
производит
column0 column1 column2
0 1 NaN price unknown
1 2 29.95 standard price
Отсутствующее значение интерпретируется как NaN
(не число).
Однако, если файл CSV содержит
1, , price unknown
2, 29.95, standard price
, тогда тот же код выдает
column0 column1 column2
0 1 price unknown
1 2 29.95 standard price
Обратите внимание, что фактически отсутствующим значением является строка, содержащая один пробел (' '
).Вы можете проверить это, используя print(df.to_dict())
.
Если вы хотите, чтобы read_csv
правильно проанализировал этот CSV-файл, вам нужно использовать sep=', '
, чтобы разделитель полей содержал пробел
df = pd.read_csv(r"C:\Users\Gord\Desktop\with_spaces.csv", header=None, prefix='column', sep=', ', engine='python')
print(df)
что снова дает нам
column0 column1 column2
0 1 NaN price unknown
1 2 29.95 standard price