我是Python,Pandas,Dash等的新手。我正在尝试构建数据框,以便为图形创建一些破折号组件,以允许用户查看和过滤数据。
最上面是聚合特征,前三个是必需的,其余的稀疏是基于是否针对该特征聚合了数据。在第一个椭圆之后,有一天的一些摘要特征,而在第二个椭圆之后是聚合的时间序列数据。在此示例中,大约有3800个预先计算的聚合分组。
我应该尝试将聚合特征制作成MultiIndex吗?
runid是创建输出的分析运行的标识符(所有3818列的编号相同),而UID字段对于单个运行的每一列都应该是唯一的,但是多个运行将具有相同的UID,但不同RUNID。 UID是该RUNID和AGGLEVEL的CHAR1至CHAR20的唯一组合。 AGGLEVEL是分析分组,可能具有一列或多列输出。 CHAR3_CHAR6_UNADJ是CHAR3和CHAR6的唯一组合,因此填充了这两行,而其余CHAR行为空(很好,NaN)。我当前的示例只是一次运行,但是有成千上万次运行,尽管我通常只关注一个一个时间,并且每个数据的子集一次处理的时间可能不会超过10-20。仅当该列具有由该特征聚集的数据时,才会填充Char1至Char20。
我的数据框示例:
print(dft)
0 ... 3818
UID 32 ... 19980
RUNID 1234 ... 1234
AGGLEVEL CHAR12_ADJ ... CHAR3_CHAR6_UNADJ
CHAR1 NaN ... NaN
CHAR2 NaN ... NaN
CHAR3 NaN ... 1234
CHAR4 NaN ... NaN
CHAR5 NaN ... NaN
CHAR6 NaN ... ABCD
CHAR7 NaN ... NaN
CHAR8 NaN ... NaN
CHAR9 NaN ... NaN
CHAR10 NaN ... NaN
CHAR11 NaN ... NaN
CHAR12 IJKL ... NaN
CHAR13 NaN ... NaN
CHAR14 NaN ... NaN
CHAR15 NaN ... NaN
CHAR16 NaN ... NaN
CHAR17 NaN ... NaN
CHAR18 NaN ... NaN
CHAR19 NaN ... NaN
CHAR20 NaN ... NaN
...
STARTTIME 2018-08-22 00:00:00 ... 2018-08-22 00:00:00
MAXIMUM 2.676 ... 0.654993
MINIMUM 0.8868 ... 0.258181
...
00:00 1.2288 ... 0.335217
01:00 1.2828 ... 0.337848
02:00 1.2876 ... 0.324639
03:00 1.194 ... 0.314569
04:00 1.2876 ... 0.258181
05:00 1.1256 ... 0.284699
06:00 1.4016 ... 0.364655
07:00 1.122 ... 0.388968
08:00 1.0188 ... 0.452711
09:00 1.008 ... 0.507032
10:00 1.0272 ... 0.546807
11:00 0.972 ... 0.605359
12:00 1.062 ... 0.641152
13:00 0.8868 ... 0.625082
14:00 1.1076 ... 0.623865
15:00 0.9528 ... 0.654993
16:00 1.014 ... 0.645511
17:00 2.676 ... 0.62638
18:00 0.9888 ... 0.551629
19:00 1.038 ... 0.518322
20:00 1.2528 ... 0.50793
21:00 1.08 ... 0.456993
22:00 1.1724 ... 0.387063
23:00 1.1736 ... 0.345045
[62 rows x 3819 columns]
答案 0 :(得分:0)
您应该尝试将其与df['key'] = (df.doc_type == 'opening_document').cumsum()
转置。您将获得从0到3818的样本编号作为索引,然后可以更方便地选择列,例如使用dft.T
。
对于NaN,您应该执行dft['STARTTIME']
,以使Pandas理解它实际上是NaN而不是字符串(别忘了写dft = dft.replace('NaN',np.nan)
)。然后,您可以使用import numpy as np
检查数据框中是否存在NaN或使用pd.isna(dft)
保留完整的已完成行。