根据另一列的值修改熊猫中的日期时间列

Posted

技术标签:

【中文标题】根据另一列的值修改熊猫中的日期时间列【英文标题】:Modify datetime column in pandas based on value from another column 【发布时间】:2021-12-03 18:28:29 【问题描述】:

我有一列以整数表示月份,还有一个以白天格式存储当前日期的变量。我需要创建一个更新月份的列:

df_final["Date"] = current_day.replace(month=df_final["Month"])

但我收到以下错误:

/venv/lib/python3.8/site-packages/pandas/core/series.py", line 185, in wrapper
    raise TypeError(f"cannot convert the series to converter")
TypeError: cannot convert the series to <class 'int'>

我不知道为什么,有什么建议吗?

【问题讨论】:

我看到的大部分文档都在使用 .replace(['old value'],'new value'),没有看到任何单个参数重载,但我会从它开始。您还使用列更新月份变量吗?编辑:抱歉应该添加link 尝试df_final['Date'] + pd.DateOffset(Month=df_final['Month']) 用于日期时间操作数,您需要使用适当的函数.replace 用于字符串。 【参考方案1】:

df_final 的一个小例子会被欣赏,但是错误很明显 df_final["Date"] 是一个系列,即数据框中的一列值,而 current_day 是一个整数。 我想你需要的是申请https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html

您将 datettime 对象的每个值替换为月份列。

df_final.apply(lambda row: row["Date"].replace(month=row["Month"])) 可能会起作用,但可能会给出带有复制问题的设置。而且它也可能会很慢,具体取决于您的 df 的大小。

【讨论】:

以上是关于根据另一列的值修改熊猫中的日期时间列的主要内容,如果未能解决你的问题,请参考以下文章

熊猫通过根据另一列的值添加列级别来重塑数据框[重复]

根据另一列中的更改创建带有时间戳的最后修改列

如何根据另一列设置熊猫数据框背景颜色

在另一列满足条件后计算一列中的值

如何根据R中另一列的日期(月/日/年)计算列的年/月平均值、最大值、最小值等

根据另一列熊猫设置列等于值