【发布时间】:2022-10-07 02:25:55
【问题描述】:
我有以下数据集:
在哪里:
- customer id 代表一个唯一的客户
- 每个客户都有多张发票
- 每张发票都标有唯一标识符(发票)
- 每张发票有多个项目(行)
我想确定客户发票之间的时差。换句话说,一张发票和下一张发票之间的时间。这可能吗?我应该如何使用 DiffDatetime?
这是我设置实体的方式:
es = ft.EntitySet(id=\"data\")
es = es.add_dataframe(
dataframe=df,
dataframe_name=\"items\",
index = \"items\",
make_index=True,
time_index=\"InvoiceDate\",
)
es.normalize_dataframe(
base_dataframe_name=\"items\",
new_dataframe_name=\"invoices\",
index=\"Invoice\",
copy_columns=[\"Customer ID\"],
)
es.normalize_dataframe(
base_dataframe_name=\"invoices\",
new_dataframe_name=\"customers\",
index=\"Customer ID\",
)
我试过了:
feature_matrix, feature_defs = ft.dfs(
entityset=es,
target_dataframe_name=\"invoices\",
agg_primitives=[],
trans_primitives=[\"diff_datetime\"],
verbose=True,
)
并且还将目标数据框更改为发票或客户,但这些都不起作用。
我正在尝试处理的 df 如下所示:
es[\"invoices\"].head()
我想要的可以用这样的熊猫来完成:
es[\"invoices\"].groupby(\"Customer ID\")[\"first_items_time\"].diff()
返回:
489434 NaT
489435 0 days 00:01:00
489436 NaT
489437 NaT
489438 NaT
...
581582 0 days 00:01:00
581583 8 days 01:05:00
581584 0 days 00:02:00
581585 10 days 20:41:00
581586 14 days 02:27:00
Name: first_items_time, Length: 40505, dtype: timedelta64[ns]
标签: featuretools