关键错误多索引数据框熊猫
Posted
技术标签:
【中文标题】关键错误多索引数据框熊猫【英文标题】:Key Error mulitindex dataftame pandas 【发布时间】:2018-07-13 11:47:05 【问题描述】:我有一个如下所示的数据框(称为错误):
Code ID Error1 Error 2
Time
2010-01-01 00:00:31.690 105278.0 None 5
2010-01-01 00:00:32.000 105278.0 1 None
2010-01-01 00:00:32.140 105278.0 3 None
2010-01-01 00:00:32.350 105278.0 None 7
2010-01-01 00:00:32.460 105278.0 None 1
我想为每个时间戳计算不同类型的错误并将它们保存在单独的列中:
error_count =
pd.get_dummies(errors.set_index('Time')).reset_index()
error_count.columns = ['Time', 'machineID', 'error1', 'error2',
'error3', 'error4', 'error5']
# combine errors for a given machine in a given hour error_count = error_count.groupby(['machineID', 'datetime']).sum().reset_index()
我有两个问题之一是: 当我跑步时
pd.get_dummies(errors.set_index('Time')).reset_index()
我得到关键错误(KeyError: 'Time')
第二个问题是我不知道在我的错误(Error1 和 Error 2)中有多少不同的代码,所以我不知道该怎么写
error_count.columns = ['Time', 'machineID', 'error1', 'error2',
'error3', 'error4', 'error5']
反映这一点。
提前谢谢你
【问题讨论】:
你的预期输出是什么? @cᴏʟᴅsᴘᴇᴇᴅ 您提供的答案正是我想要的。非常感谢您的帮助。 【参考方案1】:好吧,如果您观察一下,Time
已设置为索引。您可以通过查询df.index.name
来验证这一点,它应该返回Time
。
对于您的第二个查询,您可以将Time
和ID
设置为索引,然后调用pd.get_dummies
。请注意,这里的假设是 Time
已经是数据中的第一个索引列。我们将添加另一个 set_index(..., append=True)
。
# df = df.replace('None', np.nan) # optional step, if `None` is a string
df
ID Error1 Error2
Time
2010-01-01 00:00:31.690 105278.0 NaN 5
2010-01-01 00:00:32.000 105278.0 1 NaN
2010-01-01 00:00:32.140 105278.0 3 NaN
2010-01-01 00:00:32.350 105278.0 NaN 7
2010-01-01 00:00:32.460 105278.0 NaN 1
pd.get_dummies(
df.set_index('ID', append=True), prefix='', prefix_sep='')\
.add_prefix("Error")\
.reset_index()
Time ID Error1 Error3 Error1 Error5 Error7
0 2010-01-01 00:00:31.690 105278.0 0 0 0 1 0
1 2010-01-01 00:00:32.000 105278.0 1 0 0 0 0
2 2010-01-01 00:00:32.140 105278.0 0 1 0 0 0
3 2010-01-01 00:00:32.350 105278.0 0 0 0 0 1
4 2010-01-01 00:00:32.460 105278.0 0 0 1 0 0
【讨论】:
以上是关于关键错误多索引数据框熊猫的主要内容,如果未能解决你的问题,请参考以下文章