关于argmin和timestamp的熊猫问题

时间:2018-04-02 09:49:12

标签: pandas

final_month = pd.Timestamp('2018-02-01')
df_final_month = df[df['week'] >= final_month] 
df_final_month.iloc[:, 1:].sum().argmax()


index = df.set_index('week')
index['storeC'].argmin()

上面的代码是正确的,我只是不完全理解它是如何在里面工作的。我有一些问题:

1.类型(周)是datetime,将final_month设置为Timestamp的原因是datetime与Timestamp几乎相同,它们在Python中相互识别?

2.关于argmax()和argmin(),对于df_final_month.iloc [:,1:]。sum()。argmax(),我删除了sum()并试着像df_final_month.iloc [:, 1:]。argmax(),它返回

`AttributeError: 'DataFrame' object has no attribute 'argmax'` 

为什么?为什么第二个代码不需要max()或者什么来调用argmin(),使用argmin()/ argmax()的要求是什么?

请解释python或pandas如何处理这些数据的细节,越详细越好。

谢谢!

我是Python的新手。

1 个答案:

答案 0 :(得分:1)

  
      
  1. 时间戳几乎与日期时间相同吗?
  2.   

以下是pandas文档本身的引用:

  

TimeStamp是大熊猫相当于python的日期时间,并且在大多数情况下可以与它互换

事实上,如果您查看pandas的源代码,您会看到Timestamp actually inherits from datetime。以下是检查这些陈述是否正确的代码:

dt = datetime.datetime(2018, 1, 1)
ts = pd.Timestamp('2018-01-01')
dt == ts # True
isinstance(ts, datetime.datetime)  # True
  
      
  1. 为什么在不调用argmax的情况下调用DataFrame上的sum方法会引发错误?
  2.   

因为DataFrame对象没有argmax方法,only Series do。在您的情况下,sum会返回一个Series实例。