Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        上个月关闭。
                                                                                            
                
        
也许对你们大多数人来说这将是一个愚蠢的问题,但我已经在google中寻找了一个很好的答案,但我仍然不太了解此函数(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

08-07 03:08