gpt4 book ai didi

python - 在转换中访问 DataFrame 的不同列

转载 作者:行者123 更新时间:2023-12-01 00:55:05 25 4
gpt4 key购买 nike

我想编写一个转换函数来访问 DataFrame 中的两列并将其传递给 transform()

这是我要修改的数据框:打印(df)

    date   increment  
0 2012-06-01 0
1 2003-04-08 1
2 2009-04-22 3
3 2018-05-24 6
4 2006-09-25 2
5 2012-11-02 4

我想将日期列中的年份增加给定变量增量的年数。建议的代码(不起作用)是:

df.transform(lambda df: date(df.date.year + df.increment, 1, 1))

有没有办法访问传递给 transform() 的函数(此处为 lambda 函数)中的各个列?

最佳答案

您可以使用pandas.to_timedelta :

# If necessary convert to date type first
# df['date'] = pd.to_datetime(df['date'])

df['date'] = df['date'] + pd.to_timedelta(df['increment'], unit='Y')

[输出]

                 date  increment
0 2012-06-01 00:00:00 0
1 2004-04-07 05:49:12 1
2 2012-04-21 17:27:36 3
3 2024-05-23 10:55:12 6
4 2008-09-24 11:38:24 2
5 2016-11-01 23:16:48 4
<小时/>

或者:

df['date'] = pd.to_datetime({'year': df.date.dt.year.add(df.increment),
'month': df.date.dt.month,
'day': df.date.dt.day})

[输出]

        date  increment
0 2012-06-01 0
1 2004-04-08 1
2 2012-04-22 3
3 2024-05-24 6
4 2008-09-25 2
5 2016-11-02 4
<小时/>

您自己的解决方案也可以通过使用 apply 方法并传递 axis=1 参数来修复:

from datetime import date

df.apply(lambda df: date(df.date.year + df.increment, 1, 1), axis=1)

关于python - 在转换中访问 DataFrame 的不同列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56294482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com