我不熟悉Python、Pandas、Dash等,我正在尝试构造一个数据帧,这样我就可以创建一些Dash组件来绘制图形,从而允许用户查看和过滤数据。在
顶部是聚合特性,前3个是必需的,其余的是稀疏的,这取决于是否为该特性聚合了数据。在第一个省略号之后,有一些当天的汇总特征,第二个省略号之后是时间序列数据的汇总。在这个例子中,大约有3800个预先计算的聚合分组。在
我应该试着把聚合特征变成一个多重索引吗?在
runid是创建输出的分析运行的标识符(所有3818列都是相同的编号),而UID字段对于单个运行的每一列都应该是唯一的,但是多个运行将具有相同的UID和不同的runid。UID是RUNID和aggrevel的CHAR1到CHAR20的唯一组合。aggrevel是可以有一列或多列输出的分析分组。CHAR3_CHAR6_UNADJ是CHAR3和CHAR6的唯一组合,因此这两行被填充,而其余的CHAR行为null(很难)我当前的示例只是一次运行,但是有成千上万次运行,虽然我通常一次只处理一个,而且每次处理的数据不会超过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]
你应该试着用
dft.T
来转置它。您可以将样本号从0到3818作为索引,这样选择列会更容易,例如使用dft['STARTTIME']
。对于NaN,您应该执行
dft = dft.replace('NaN',np.nan)
,这样Pandas就会明白它实际上是一个NaN而不是一个字符串(不要忘记在前面写import numpy as np
)。然后可以使用pd.isna(dft)
检查数据帧中是否有NaN,或者使用dft.dropna()
来保持完整的行。在相关问题 更多 >
编程相关推荐