Я бы рекомендовал проверить пакет sqldf Gabor Grothendieck , который позволяет вам выражать эти операции в SQL.
library(sqldf)
## inner join
df3 <- sqldf("SELECT CustomerId, Product, State
FROM df1
JOIN df2 USING(CustomerID)")
## left join (substitute 'right' for right join)
df4 <- sqldf("SELECT CustomerId, Product, State
FROM df1
LEFT JOIN df2 USING(CustomerID)")
Я нахожу синтаксис SQL более простым и более естественным, чем его эквивалент R (но это может просто отражать смещение RDBMS).
Для получения дополнительной информации о объединениях см. Gabor's sqldf GitHub .
Это Python3 bytes
literal . Этот префикс отсутствует в Python 2.5 и старше (он эквивалентен простой строке 2.x, а простая строка 3.x эквивалентна литералу с префиксом u
в 2.x). В Python 2.6+ он эквивалентен простой строке, для совместимости с 3.x .
Префикс b
означает bytes
строковый литерал .
Если вы видите, что он используется в исходном коде Python 3, выражение создает bytes
object , а не обычный объект Unicode str
. Если вы видите, что это отражено в вашей оболочке Python или как часть списка, dict или другого содержимого контейнера, то вы видите объект bytes
, представленный с использованием этой нотации.
bytes
объекты в основном содержат последовательность из целых чисел в диапазоне 0-255, но если они представлены, Python отображает эти байты как кодовые точки ASCII, чтобы облегчить чтение их содержимого. Любые байты вне диапазона для печати символов ASCII отображаются как escape-последовательности (например, \n
, \x82
и т. Д.).
Поскольку объект bytes
состоит из последовательность целых чисел, вы можете построить объект bytes
из любой другой последовательности целых чисел со значениями в диапазоне 0-255, например, список:
bytes([72, 101, 108, 108, 111])
bytes
model двоичный данных , включая закодированный текст . Если ваше значение bytes
содержит текст, вам необходимо его сначала декодировать, используя правильный кодек. Например, если данные кодируются как UTF-8, вы можете получить значение Unicode str
с помощью:
strvalue = bytesvalue.decode('utf-8')
И наоборот, чтобы перейти от текста в объекте str
к bytes
вам нужно закодировать . Вам нужно решить, какую кодировку использовать; по умолчанию используется UTF-8, но то, что вам нужно, сильно зависит от вашего прецедента:
bytesvalue = strvalue.encode('utf-8')
Вы также можете использовать конструктор bytes(strvalue, encoding)
, чтобы сделать то же самое.
Оба метода декодирования и кодирования принимают дополнительный аргумент в , чтобы указать, как обрабатывать ошибки .
Python 2, версии 2.6 и 2.7 также поддерживают создание строки литералов с использованием синтаксиса строки b'..'
string, чтобы облегчить выполнение кода, который работает как на Python 2, так и на 3.