Программы на Python
Anonymous
Найти разницу между датами с заданным условием
Сообщение
Anonymous » 28 ноя 2024, 05:34
В наборе данных я пытаюсь найти разницу в датах между двумя типами 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
1732761268
Anonymous
В наборе данных я пытаюсь найти разницу в датах между двумя типами ACQDISP (скажем, покупка и продажа акций). Я пытаюсь найти разницу в днях между покупкой (A) и покупкой (A), покупкой (A) и продажами (D), продажами (D) и продажами (D) и продажами (D) и покупкой (A). Например , у меня есть первые три строки «D» (см. столбец ACQDISP) в одну и ту же дату (см. TRANDATE). Я могу рассчитать расстояние между «D» и «D» или «A» и «A» с помощью следующего кода. [code]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")) [/code] [code]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 │ └─────────┴────────────┴────────────┴────────────┴────────────────────────────┘ [/code] Как рассчитать расстояние между D и A или A и D? Подробнее здесь: [url]https://stackoverflow.com/questions/79232375/find-difference-between-dates-with-a-given-condition[/url]