Для этого примера я использую версию 1.0.1
из pandas.
У меня есть DataFrame со смешанными типами и некоторыми пропущенными значениями:
df = pd.DataFrame(
[
[1, 2.0, '2020-01-01', 'A String']
], columns = ['int', 'float', 'datetime', 'str']
)
df.loc[1] = [pd.NA, pd.NA, pd.NA, pd.NA]
df.datetime = pd.to_datetime(df.datetime)
print(df)
int float datetime str
0 1 2.0 2020-01-01 A String
1 <NA> NaN NaT NaN
Давайте распечатаем типы DataFrame, чтобы убедиться, что они соответствуют ожиданиям:
print(df.dtypes)
int object
float float64
datetime datetime64[ns]
str object
dtype: object
Теперь я хочу записать этот DataFrame в CSV file:
df.to_csv('test.csv', index=False)
Глядя на выходной CSV, все значения NaN заменяются пустой строкой. Я думаю, что это хорошо для строковых столбцов, но это не совсем оптимально для int
, float
или datetime
столбцов.
Как я могу получить спецификацию столбца c представления отсутствующих значений ?
РЕДАКТИРОВАТЬ: Действительно возможно автоматически заполнить пропущенные значения, используя аргумент na_rep
: df.to_csv('test.csv', na_rep='NA')
. Тем не менее, он не позволяет указывать столбец c представлений.
РЕШЕНИЕ: Я думаю, что лучшее решение на данный момент - это вызвать fillna
с помощью dict перед записью в CSV:
df.fillna(
{'int': '<NA>', 'float': 'NaN', 'datetime': 'NaT'}
).to_csv('test.csv', index=False)