首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pandas中加载这种数据

如何在pandas中加载这种数据
EN

Stack Overflow用户
提问于 2019-04-30 14:18:02
回答 1查看 45关注 0票数 2

背景:我有一些在设备制造后的测试过程中生成的日志。每个设备都有一个序列号和一个包含所有数据的相应csv日志文件。就像这样。

代码语言:javascript
复制
DATE,TESTSTEP,READING,LIMIT,RESULT
01/01/2019 07:37:17.432 AM,1,23,10,FAIL
01/01/2019 07:37:23.661 AM,2,3,3,PASS

所以有很多这样的日志文件。每一个都有测试数据。我有现场故障设备的序列号。我想使用这些日志文件创建一个模型。然后使用它来预测给定设备在给定其日志文件的情况下是否有失败的机会。

到目前为止,作为学习的一部分,我一直在处理像房价这样的数据。每行都是完整的。根据面积、房间数量等,很容易为预期销售价格定义一个模型。

在这里,我左右为难,试图找到一种方法,以某种方式将所有的日志展平成一行。我在考虑像这样的东西:

代码语言:javascript
复制
DATE_1,TESTSTEP_1,READING_1,LIMIT_1,RESULT_1,DATE_2,TESTSTEP_2,READING_2,LIMIT_2,RESULT_2
1/1/2019 07:37:17.432 AM,1,23,10,FAIL,01/01/2019 07:37:23.661 AM,2,3,3,PASS

第一个问题是,我不确定这是否是处理这种数据的正确方法。如果是这样,那么请给我一些指点。

另外,如果这是正确的方法,那么Pandas是否有任何内置的支持?

我将使用scikit-learn创建模型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-30 14:21:26

首先将列转换为有序的CategoricalIndex以便输出中的列的顺序相同,按to_datetime转换DATE列并使用计数器的cumcount将datetimes转换为dates,按set_index创建MultiIndex,按unstack重塑形状,并通过< MultiIndex in columns >C9MultiIndex in columns>对二级代码进行排序。最后,使用reset_index通过list comprehension将其展平

代码语言:javascript
复制
df['DATE'] = pd.to_datetime(df['DATE'])
dates = df['DATE'].dt.date

df.columns = pd.CategoricalIndex(df.columns,categories=df.columns, ordered=True)
g = df.groupby(dates).cumcount().add(1)
df = df.set_index([dates, g]).unstack().sort_index(axis=1, level=1)
df.columns = [f'{a}_{b}' for a, b in df.columns]
df = df.reset_index(drop=True)
print (df)
                   DATE_1  TESTSTEP_1  READING_1  LIMIT_1 RESULT_1  \
0 2019-01-01 07:37:17.432           1         23       10     FAIL   

                   DATE_2  TESTSTEP_2  READING_2  LIMIT_2 RESULT_2  
0 2019-01-01 07:37:23.661           2          3        3     PASS

如果还需要在单独的第一列中dates:

代码语言:javascript
复制
df['DATE'] = pd.to_datetime(df['DATE'])
dates = df['DATE'].dt.date

df.columns = pd.CategoricalIndex(df.columns,categories=df.columns, ordered=True)
g = df.groupby(dates).cumcount().add(1)
df = df.set_index([dates.rename('DAT'), g]).unstack().sort_index(axis=1, level=1)
df.columns = [f'{a}_{b}' for a, b in df.columns]
df = df.reset_index()
print (df)
         DAT                  DATE_1  TESTSTEP_1  READING_1  LIMIT_1 RESULT_1  \
0 2019-01-01 2019-01-01 07:37:17.432           1         23       10     FAIL   

                   DATE_2  TESTSTEP_2  READING_2  LIMIT_2 RESULT_2  
0 2019-01-01 07:37:23.661           2          3        3     PASS    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55914956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档