当df.index被传递到一个序列时.12工作,但是.13有错误

2024-05-29 09:59:56 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这个代码在pandas.13版本中不起作用?这是一个错误还是我需要做不同的事情

previous=0
for i, r in df.iterrows():
    if i in df.index[df.groupby(['case']).apply(lambda x: x['change'].idxmin())]:
      print 'anything'

我找不到任何说明原因的文件

用于测试

import pandas as pd
import datetime as DT
d = {'case' : pd.Series([1,1,1,1,2]),
'open' : pd.Series([DT.datetime(2014, 3, 2), DT.datetime(2014, 3, 2),DT.datetime(2014, 3, 2),DT.datetime(2014, 3, 2),DT.datetime(2014, 3, 2)]),
'change' : pd.Series([DT.datetime(2014, 3, 8), DT.datetime(2014, 4, 8),DT.datetime(2014, 5, 8),DT.datetime(2014, 6, 8),DT.datetime(2014, 6, 8)]),
'StartEvent' : pd.Series(['Homeless','Homeless','Homeless','Homeless','Jail']),
'ChangeEvent' : pd.Series(['Homeless','irrelivant','Homeless','Jail','Jail']),
'close' : pd.Series([DT.datetime(2015, 3, 2), DT.datetime(2015, 3, 2),DT.datetime(2015, 3, 2),DT.datetime(2015, 3, 2),DT.datetime(2015, 3, 2)])}
df=pd.DataFrame(d)

Tags: 代码inimport版本dfdatetimeas错误
1条回答
网友
1楼 · 发布于 2024-05-29 09:59:56

这样做很奇怪,你认为结果会怎样

如果真的要这样做,请使用值。序列不是df.index的有效索引器(只有数组是有效的)。这在0.12中“起作用”,但碰巧依赖于一个事实,即一个系列是一个ndarray子类

df.index[df.groupby(['case']).apply(lambda x: x['change'].idxmin()).values]
Int64Index([0, 4], dtype='int64')

相关问题 更多 >

    热门问题