Панда, эквивалентная
select * from table where column_name = some_value
, является
table[table.column_name == some_value]
Множественные условия:
table[(table.column_name == some_value) | (table.column_name2 == some_value2)]
или
table.query('column_name == some_value | column_name2 == some_value2')
import pandas as pd
# Create data set
d = {'foo':[100, 111, 222],
'bar':[333, 444, 555]}
df = pd.DataFrame(d)
# Full dataframe:
df
# Shows:
# bar foo
# 0 333 100
# 1 444 111
# 2 555 222
# Output only the row(s) in df where foo is 222:
df[df.foo == 222]
# Shows:
# bar foo
# 2 555 222
В приведенном выше коде это строка df[df.foo == 222]
, которая дает строки на основе значения столбца, 222
в этом case.
Возможны также множественные условия:
df[(df.foo == 222) | (df.bar == 444)]
# bar foo
# 1 444 111
# 2 555 222
Но в этот момент я бы рекомендовал использовать функцию query , так как он менее подробный и дает тот же результат:
df.query('foo == 222 | bar == 444')
Вы могли закодировать двоичные данные с помощью base64 и поместить его в элемент Base64; ниже статьи довольно хороший на предмете.
XML таким образом универсален...
<DATA>
<BINARY>
<BIT index="0">0</BIT>
<BIT index="1">0</BIT>
<BIT index="2">1</BIT>
...
<BIT index="n">1</BIT>
</BINARY>
</DATA>
XML похож на насилие - Если это не решает Вашу проблему, Вы не используете достаточно его.
РЕДАКТИРОВАНИЕ:
BTW: Base64 + CDATA является, вероятно, лучшим решением
(EDIT2:
, Кто бы ни upmods я, также upmod реальный ответ. Мы не хотим, чтобы какая-либо плохая душа приехала сюда и на самом деле реализовала мой метод, потому что это было самое высокое, оцениваемое на Так, правильно?)
Я обычно кодирую двоичные данные MIME Base64 или URL, кодирующий .
Base64 является действительно правильным ответом, но CDATA не, это в основном говорит: "это могло быть чем-либо", однако это должно не быть просто чем-либо, это должны быть закодированные двоичные данные Base64. XML-схема определяет Основа 64 двоичных файла как примитивный тип данных , который можно использовать в xsd.
Попробуйте Base64, кодирующий/декодирующий Ваши двоичные данные. Также изучите разделы CDATA
Возможно, закодируйте их в известный набор - что-то как основа 64 является популярным выбором.
Вы можете также Программа uuencode Вы исходные двоичные данные. Этот формат является немного более старым, но он делает то же самое как base63 кодирование.
Любое двоичное кодирование подойдет. Я использую что-то вроде этого
<data encoding="yEnc>
<![CDATA[ encoded binary data ]]>
</data>
У меня была эта проблема только на прошлой неделе. Мне пришлось сериализовать PDF-файл и отправить его внутри XML-файла на сервер.
Если вы используете .NET, вы можете преобразовать двоичный файл непосредственно в строку base64 и вставить его в элемент XML.
string base64 = Convert.ToBase64String(File.ReadAllBytes(fileName));
Или есть метод, встроенный прямо в объект XmlWriter. В моем конкретном случае мне пришлось включить пространство имен типа данных Microsoft:
StringBuilder sb = new StringBuilder();
System.Xml.XmlWriter xw = XmlWriter.Create(sb);
xw.WriteStartElement("doc");
xw.WriteStartElement("serialized_binary");
xw.WriteAttributeString("types", "dt", "urn:schemas-microsoft-com:datatypes", "bin.base64");
byte[] b = File.ReadAllBytes(fileName);
xw.WriteBase64(b, 0, b.Length);
xw.WriteEndElement();
xw.WriteEndElement();
string abc = sb.ToString();
Строка abc выглядит примерно так:
<?xml version="1.0" encoding="utf-16"?>
<doc>
<serialized_binary types:dt="bin.base64" xmlns:types="urn:schemas-microsoft-com:datatypes">
JVBERi0xLjMKJaqrrK0KNCAwIG9iago8PCAvVHlwZSAvSW5mbw...(plus lots more)
</serialized_binary>
</doc>