Size: a a a

Python для анализа данных

2021 October 19

DB

Dmytro Buzanov in Python для анализа данных
источник

PZ

Pavel Zheltouhov in Python для анализа данных
по-моему вообще гуглинг максимально упрощается в этом случае. а что без ссылки?
источник
2021 October 20

МК

Максим Коротченков... in Python для анализа данных
Ребят, привет, мне нужно сделать бесшовный интервал по времени для группы авто, на рисунке показал:
источник

МК

Максим Коротченков... in Python для анализа данных
источник

МК

Максим Коротченков... in Python для анализа данных
То есть, в рамках группы для второй строки передвинуть левую дату вправо для первой строки, и так далее по аналогии для 3 строки, но в рамках группы
источник

KM

Konstantin Mohov in Python для анализа данных
pd.shift смотрели?
источник

IS

Ilya Shutov in Python для анализа данных
не ленитесь искать на SO.
https://stackoverflow.com/questions/53335567/use-pandas-shift-within-a-group

хотя супротив data.table это все страшная сивуха
источник

МК

Максим Коротченков... in Python для анализа данных
Да, спасибо, вроде понял как делать тепенрь
источник
2021 October 21

IB

Igor Bobylev in Python для анализа данных
назрел вот такой вопрос - при джойне в sql можно задавать несколько условий, например
...
LEFT JOIN table b
ON a.Key=b.Key
AND b.value>100
AND (a.value>b.value OR b.value2 IS NULL)
...
есть ли такая возможность в рамках df.merge? или нужно сначала мержить, а уже потом дофильтровывать?
источник

h

helby in Python для анализа данных
Можно

df =(df.merge(df1, how='left',
left_on =['Col1', 'Col2', 'Col3'], right_on = ['Col4','Col5', 'Col6'])
.filter('Col4'>100,'Col2'<500))
источник

IB

Igor Bobylev in Python для анализа данных
в этом примере подразумевается Col1 = Col4 and Col2 = Col5 and Col3 = Col6, а что если нужно например Col1 = Col4 and Col2 != Col5 ?
источник

IB

Igor Bobylev in Python для анализа данных
а, пока я писал вопрос вы отредактировали пост, видимо через .filter такое докручивать
источник

h

helby in Python для анализа данных
да, возможно по синтаксису чуть ошибаюсь, но думайте в этом направлении

WHERE задаем уже в фильтре да, сами джоины в мердже
источник

IB

Igor Bobylev in Python для анализа данных
спасибо!
источник

IB

Igor Bobylev in Python для анализа данных
я посидел повтыкал в этот пример, разве .filter не снесет мне во всём фрейме строки, где 'Col4'>100  и'Col2'<500?
Это я к тому, что условный кликхаус в конструкции
LEFT JOIN table b  
ON a.CustomerID = b.CustomerID AND b.OrderDate >'20090515'
не уберет мне строки из всего фрейма, а просто приджойнит нуллы, в строках которые не попадут под кондишен
источник

h

helby in Python для анализа данных
а вы уверены что в джоине работает фильтр в SQL?

я в кликхаусе не работал, но вроде бы фильтры работают в where или в having
источник

IB

Igor Bobylev in Python для анализа данных
ну тут речь скорее не про фильтр (под фильтром думаю логично понимать как раз блоки where и having), а кондишены джойна.
Я погуглил более тщательно, и вроде бы в df.merge все же нет возможности задавать множественные кондишены (кроме A=B and C=D итд, которые вы и описали выше)
источник

h

helby in Python для анализа данных
Ну наверное

просто я обычно кондишены джойна писал так в sql

left join table2 as t2
ON table1.name = t2.name
AND table1.id = t2.id
WHERE t2.OrderDate>'20090515'
источник

IB

Igor Bobylev in Python для анализа данных
тогда у вас отфильтруются все строки в результирующей таблице, где t2.OrderDate>'20090515' вернет фолс
источник

IB

Igor Bobylev in Python для анализа данных
а если
left join table2 as t2
ON table1.name = t2.name
AND table1.id = t2.id
AND t2.OrderDate>'20090515'
то тут просто приджойните нуллы, где t2.OrderDate>'20090515' вернет фолс
источник