通过面板取消堆栈,或者在pandas中无法使用set_index

时间:2014-04-08 21:09:18

标签: pandas

我尝试过一系列方法,例如面板,排序,set_index,unstack,reindex。大熊猫的工作流程是什么?

如果我走下面板路径;我得到一个非唯一索引错误。

如果我尝试set_index,则取消堆叠...... - >我得到了一个级别错误。

我有这样的数据:

Out[6]: time item value 2012-11-25 14:00:00 -0500 A 12 2012-11-25 19:00:00 -0500 A 22 2012-11-26 03:00:00 -0500 A 24 2012-11-19 06:00:00 -0500 A 26 2012-11-19 12:00:00 -0500 A 28 2012-11-23 17:00:00 -0500 B 12 2012-11-24 07:00:00 -0500 B 7 2012-11-16 23:00:00 -0500 B 1 2012-11-20 03:00:00 -0500 B 18 2012-11-21 15:00:00 -0500 B 16

  • 进口

我首先通过read_csv导入数据帧,然后按subject_id设置索引。

pt = pd.read_csv("./somepath/all.csv", encoding='latin1', names=hdr, sep=',' , index_col='subject_id', parse_dates=True)

我尝试添加format='/%Y/%m/%d /%H/%M/%S'参数,因为它没有按日期正确排序;但不知怎的,它开始工作,格式参数变得无法识别(在ipython中使用pandas ......?)

  • 排序

接下来,我尝试编写一个自定义类来按时间范围对itemid进行分组,但发现只是按时间排序工作以重新排序列。 (只要时间格式正确完成,对于为什么不起作用仍然有点模糊......)

pt.sort('time', ascending=True, inplace=True)

(继承人由subject_id索引的数据)

time item value subject_id
18 2007-11-22 08:17:00 -0500 646 94.0 18 2007-11-22 09:41:00 -0500 211 76.0 18 2007-11-22 09:41:00 -0500 455 89.0 18 2007-11-22 09:41:00 -0500 646 97.0 18 2007-11-22 10:55:00 -0500 211 76.0 18 2007-11-22 10:55:00 -0500 455 87.0 18 2007-11-22 10:55:00 -0500 646 97.0 18 2007-11-22 11:30:00 -0500 211 71.0 18 2007-11-22 11:30:00 -0500 455 81.0 18 2007-11-22 11:30:00 -0500 646 96.0

现在,我希望itemids为列

  • 如果我set_index的项目然后取消堆叠,AttributeError: 'Int64Index' object has no attribute 'levels'

pt.set_index('item', inplace=True) pt['value'].unstack('itemid') pt[['time','item','value']][:10]

  • 如果我尝试使用面板方法,KeyError: u'no item named itemid'

panel = pt.set_index(['item']).sortlevel(0).to_panel() panel= pt.stack('time') panel[-10:]

- 真正感谢任何帮助。

0 个答案:

没有答案