Найти разницу между датами с заданным условиемPython

Программы на Python
Ответить
Anonymous
 Найти разницу между датами с заданным условием

Сообщение Anonymous »

В наборе данных я пытаюсь найти разницу в датах между двумя типами ACQDISP (скажем, покупка и продажа акций). Я пытаюсь найти разницу в днях между покупкой (A) и покупкой (A), покупкой (A) и продажами (D), продажами (D) и продажами (D) и продажами (D) и покупкой (A). Например , у меня есть первые три строки «D» (см. столбец ACQDISP) в одну и ту же дату (см. TRANDATE). Я могу рассчитать расстояние между «D» и «D» или «A» и «A» с помощью следующего кода.

Код: Выделить всё

import polars as pl

df = pl.from_repr("""
┌─────────┬────────────┬────────────┬────────────┐
│ ACQDISP ┆ TRANDATE   ┆ SHARES_ADJ ┆ TPRICE_ADJ │
│ ---     ┆ ---        ┆ ---        ┆ ---        │
│ str     ┆ str        ┆ f64        ┆ f64        │
╞═════════╪════════════╪════════════╪════════════╡
│ D       ┆ 2001-12-31 ┆ 2000.0     ┆ 6.7        │
│ D       ┆ 2001-12-31 ┆ 6000.0     ┆ 6.45       │
│ D       ┆ 2001-12-31 ┆ 3000.0     ┆ 6.52       │
│ A       ┆ 2004-08-09 ┆ 5.4e6      ┆ 60.75      │
│ A       ┆ 2004-08-24 ┆ 2.1954e6   ┆ null       │
│ D       ┆ 2004-08-24 ┆ 4.63418e6  ┆ 52.435     │
│ A       ┆ 2014-12-17 ┆ 3.84581e6  ┆ null       │
└─────────┴────────────┴────────────┴────────────┘
""")

df = df.with_columns(TRANDATE=pl.col("TRANDATE").str.to_date())
df = df.sort("TRANDATE", descending=False)

days_difference_subsquent_trans = df.with_columns(pl.col("TRANDATE").diff().over("ACQDISP").alias("date_diff_subsequent_trans"))

Код: Выделить всё

shape: (7, 5)
┌─────────┬────────────┬────────────┬────────────┬────────────────────────────┐
│ ACQDISP ┆ TRANDATE   ┆ SHARES_ADJ ┆ TPRICE_ADJ ┆ date_diff_subsequent_trans │
│ ---     ┆ ---        ┆ ---        ┆ ---        ┆ ---                        │
│ str     ┆ date       ┆ f64        ┆ f64        ┆ duration[ms]               │
╞═════════╪════════════╪════════════╪════════════╪════════════════════════════╡
│ D       ┆ 2001-12-31 ┆ 2000.0     ┆ 6.7        ┆ null                       │
│ D       ┆ 2001-12-31 ┆ 6000.0     ┆ 6.45       ┆ 0ms                        │
│ D       ┆ 2001-12-31 ┆ 3000.0     ┆ 6.52       ┆ 0ms                        │
│ A       ┆ 2004-08-09 ┆ 5.4e6      ┆ 60.75      ┆ null                       │
│ A       ┆ 2004-08-24 ┆ 2.1954e6   ┆ null       ┆ 15d                        │
│ D       ┆ 2004-08-24 ┆ 4.63418e6  ┆ 52.435     ┆ 967d                       │
│ A       ┆ 2014-12-17 ┆ 3.84581e6  ┆ null       ┆ 3767d                      │
└─────────┴────────────┴────────────┴────────────┴────────────────────────────┘
Как рассчитать расстояние между D и A или A и D?


Подробнее здесь: https://stackoverflow.com/questions/792 ... -condition
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»