【发布时间】:2022-11-10 05:50:41
【问题描述】:
在将熊猫升级到最新版本之前,我的以下代码运行良好:
def group_amounts_by_batch(self) -> pd.DataFrame:
data_frame = (
self.data_frame[self.columns.amount]
.groupby(
[
self.data_frame[ExtraColumnNames.BatchId],
self.data_frame[ExtraColumnNames.DepositId],
self.data_frame[ExtraColumnNames.DepositAmount],
self.data_frame[ExtraColumnNames.DepositDate],
self.data_frame[ExtraColumnNames.BatchDate],
self.data_frame[ExtraColumnNames.NonFundedAmount],
]
)
.sum()
.reset_index()
)
data_frame = data_frame[data_frame[ExtraColumnNames.DepositId] != ""]
data_frame = data_frame.round(2)
return data_frame
但现在我收到以下警告:
FutureWarning:从包含字符串的数据推断 datetime64[ns] 已弃用,并将在未来版本中删除。要保留旧行为,请显式传递 Series(data, dtype={value.dtype}) .reset_index()
如何在我的代码中使用建议的解决方案 (
explicitly pass Series(data, dtype={value.dtype}) .reset_index()) 来修复该警告?data_frame.dtypes: Batch Id object Deposit Id object Deposit Amount object Deposit Date datetime64[ns] Batch Date datetime64[ns] NonFunded Amount object amount float64 dtype: object
【问题讨论】:
-
self.data_frame,尤其是您的DepositDate或BatchDate列来自哪里前你执行这个group_amounts_by_batch函数?就我而言,我有一列包含通过 pandas 的read_excel摄取的日期值。我已经有一个转换器函数的字典,所以为包含日期值的列添加一个额外的函数对我有用。如果您不需要转换器,并且您正在使用 read_xxx 函数之一,那么使用dtypes=...参数可能是您的答案。