Я полагаю, что вам нужно выполнить прямое заполнение на ffill
с помощью DataFrame.mask
для создания пропущенных значений для всех строк, по крайней мере, с одним NaN
на DataFrame.any
, а затем для отфильтровывать строки с не всеми пропущенными значениями в строке по DataFrame.all
:
df = df.replace(0, np.nan)
m = df.isnull()
df1 = df.mask(m.any(axis=1)).ffill()
df2 = df.mask(m.all(axis=1), df1, axis=1)
print (df2)
18 19 20
197 14.0 28.0 14.0
198 14.0 NaN 14.0
200 14.0 28.0 14.0
201 14.0 28.0 14.0
202 15.0 23.0 12.0
203 16.0 NaN 18.0
204 15.0 23.0 12.0
205 15.0 23.0 12.0
Учитывая Ваши требования, я пошел бы с Google Protocol Buffers. Это кажется, что идеально подходит для Вашего приложения.
Вы могли рассмотреть XDR. Это имеет RFC . Я использовал его и никогда не имел проблем производительности с ним. Это использовалось в ONC RPC и имеет и идет с инструментом, названным rpcgen. Также легко создать генератор самостоятельно, когда Вы просто хотите сериализировать данные (который является тем, что я закончил тем, что делал по причинам мобильности, взял меня половина дня). Существует реализация открытого исходного кода C, но это может уже быть в системной библиотеке, таким образом, Вам не были бы нужны источники.
ASN.1 всегда казался немного барочным мне, но в зависимости от Ваших фактических потребностей могло бы быть более соответствующим, так как существуют некоторые ограничения к XDR.
Просто требуемый для добавления ASN.1 в это соединение. ASN.1 является стандартом формата, но существуют библиотеки для большинства языков и интерфейс C через , asn1c является намного более чистым, чем интерфейс C для буферов протокола .
JSON является действительно моим фаворитом для этого вида материала. У меня нет предшествующего опыта с двоичным материалом в нем все же. Отправьте свои результаты, если Вы - планирование использования JSON!
Экономия является двоичным форматом, созданным Facebook. Вот сравнение с буферами протокола Google.
Существует также Двоичный XML, но это кажется не стабилизированным все же. Статья, с которой я связываюсь, дает набор ссылок, которые могли бы представлять интерес.
Другая опция SNAC/TLV, который используется AOL в, он - протокол Оскара/AIM.
Также выезд Мышца . В то время как это делает вполне немного, это сериализирует к двоичному формату.