gpt4 book ai didi

python - python 3.6中的attrgetter函数

转载 作者:行者123 更新时间:2023-12-01 06:39:14 30 4
gpt4 key购买 nike

也许对于你们大多数人来说,这将是一个愚蠢的问题,但我已经在谷歌中寻找一个好的答案,但我仍然不太明白这个函数(operator.attrgetter)的作用。

下一行代码是我认识的人使用此函数的一个示例:

df['diff'] = df['diff'].apply(attrgetter('n'))

其中 df['diff'] 是包含两个日期之间差异的列,输出只是一系列数字。

此时我不在乎你是否把这个问题限定得那么糟糕,只要你能帮助我理解它,谢谢......

最佳答案

我认为一个例子可以提供帮助。假设我们有一个像这样的数据框:

df = pd.DataFrame({'data1':['2019', '2020'], 'data2':['2018', '2018']})
df.data1 = pd.to_datetime(df.data1)
df.data2 = pd.to_datetime(df.data2)
df['diff'] = df.data1-df.data2
<小时/>
>>> df

data1 data2 diff
0 2019-01-01 2018-01-01 365 days
1 2020-01-01 2018-01-01 730 days

diff 列的每个元素都是一个 Timedelta 对象:

>>> type(df['diff'].iloc[0])
pandas._libs.tslibs.timedeltas.Timedelta

Timedelta 对象具有属性days。假设我们希望在数据框中创建一个新列,其中包含数据框每一行的此属性的值。我们可以使用 attrgetter 来实现:

from operator import attrgetter
df['days_diff'] = df['diff'].apply(attrgetter('days'))

结果是:

       data1      data2     diff  days_diff
0 2019-01-01 2018-01-01 365 days 365
1 2020-01-01 2018-01-01 730 days 730

关于python - python 3.6中的attrgetter函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59534119/

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