Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带Agg最小/最大日期的熊猫分组_Python_Pandas - Fatal编程技术网

Python 带Agg最小/最大日期的熊猫分组

Python 带Agg最小/最大日期的熊猫分组,python,pandas,Python,Pandas,我试图从可能没有日期的列中获取最小/最大日期 我尝试过诸如“”、“NaN”、真、假、0等东西 我首先根据“+”或“-”的动作,从实际日期开始设置“p_日期”和“s_日期” df_td [ 'p_date' ] = np.where ( df_td.action == '+', df_td.date, ??? ) df_td [ 's_date' ] = np.where ( df_td.action == '-', df_td.date, ??? ) 所以我需要p_日期的最小值和s_日期的

我试图从可能没有日期的列中获取最小/最大日期

我尝试过诸如“”、“NaN”、真、假、0等东西

我首先根据“+”或“-”的动作,从实际日期开始设置“p_日期”和“s_日期”

 df_td [ 'p_date' ] = np.where ( df_td.action == '+', df_td.date, ??? )
 df_td [ 's_date' ] = np.where ( df_td.action == '-', df_td.date, ??? )
所以我需要p_日期的最小值和s_日期的最大值

  issue      p_date      s_date
0  issue  2012-11-01            
1  issue  2013-12-09            
2  issue  2014-12-08            
3  issue              2016-01-13
4  issue  2012-11-01            
5  issue              2014-03-26
6  issue              2015-05-29
7  issue  2013-12-18            
8  issue              2016-01-13
我做一个小组

g = df_td.groupby ( [ 'name', 'type' ], as_index = False ).agg (
     {  ...
        'p_date': 'min',
        's_date': 'max'
      } )
这给了我以下的错误

'<=' not supported between instances of 'datetime.date' and 'str'

”我对我的答案不满意,但似乎有效

我创建了一个地板和天花板日期

floor = datetime.date ( 1900, 1, 1 )
ceil = datetime.date ( 2100, 1, 1 )

df_td [ 'p_date' ] = np.where ( df_td.action == '+', df_td.date, ceil )
df_td [ 's_date' ] = np.where ( df_td.action == '-', df_td.date, floor )
这样,它们将抵消需要数据对象才能工作的最小/最大聚合函数


我仍然希望有一个更合适的建议。谢谢。

在pandas中,
NaN
被用作缺少的值,并且在大多数操作中被忽略,因此它是正确的使用方法。如果你仍然得到一个错误,可能是因为你在那里有一个datetime.date(好吧,你肯定在那里,我的意思是它可能是导致问题的原因)

例如,如果缺少的值是
“”
,而列数据类型是
对象
,内部类型为
日期时间.日期
,则我得到:

In [496]: df.groupby("issue").agg({"p_date": "min", "s_date": "max"})
[...]
TypeError: '<=' not supported between instances of 'datetime.date' and 'str'

这是一个尚不清楚的问题。。你能发个帖子吗?你说你试过“NaN”
,但你描述它的方式让人觉得你用了一个字符串来表示这三个字母。您是否尝试了
NaN
,如
np.NaN
float(“NaN”)
?是的,尝试了NaN和np.NaN。我想它是在寻找一个可以工作的约会对象?谢谢
In [500]: df["p_date"] = pd.to_datetime(df["p_date"])

In [501]: df["s_date"] = pd.to_datetime(df["s_date"])

In [502]: df
Out[502]: 
   issue     p_date     s_date
0  issue 2012-11-01        NaT
1  issue 2013-12-09        NaT
2  issue 2014-12-08        NaT
3  issue        NaT 2016-01-13
4  issue 2012-11-01        NaT
5  issue        NaT 2014-03-26
6  issue        NaT 2015-05-29
7  issue 2013-12-18        NaT
8  issue        NaT 2016-01-13

In [503]: df.groupby("issue").agg({"p_date": "min", "s_date": "max"})
Out[503]: 
          p_date     s_date
issue                      
issue 2012-11-01 2016-01-13