如何从《大熊猫数据集》一栏中提取周期性数据

By simon at 2019-05-17 • 0人收藏 • 30人看过

我有一个包含161941行76列的大数据的 CSV 文件,我从中提取了161941行3列的有用数据。

现在我的数据库看起来是这样的

提取大小为161941行3列的 Dataframme

"bKLR touchauswertung"列是定期数据,并以此格式查看

"bKLR touchauswertung"77101010101010700000000071010107000000000

一直重复到最后

我想从这里得到的是。

列中的每一组非零值都应该作为新列添加到数据库中。

比如说,第一组非零值应该作为新列"set1",以此类推。 .

如果我能得到任何可能的解决方案,那就太好了。 谢谢,阿比奈


下面是一个关于初始数据和预期数据的更详细的例子:

下面是我的数据框架

1858371918371978310. . . . . . . . . 20518310 * * 205783020638302057830. . . . . . . . . 3000830 * * 3006837301283730188310. . . . . . . . . 60008310 * * 600683060128306018830. . . . . . . . . 8000830

这个过程还在继续

现在,我需要一个像这样的数据图像

第一组,第二组。 时间戳 * * 1858370191837019783100。 . . . . . . . . . . . . . . 20518310100 * * 20578300002063830000205783000. . . . . . . . . . . . . . . 300083000 * 30068370730128370730188310010. . . . . . . . . . . . . . . 60008310010 * * 600683000060128300000. . . . . . . . . . . . . . . 800083000
2 个回复 | 最后更新于 2019-05-17
2019-05-17   #1

如果你能接受Setxx列不一定是连续的,可以使用 shift 检测0和非0值之间的变化,然后Np. 分裂把这些变化的数据分成指数。

完成此操作后,很容易为每个序列添加一个0的新列,并在其中复制原始值。 但是使用简单的连续索引更容易,因为Np. 分裂. 所以代码可以是:

# 使用一个简单的连续索引 df.reset index (inplace True) # 将索引拆分为 null 值和非 null 值 subs np.split (df.index.values,df [(df.toucha 0) & (df.toucha.shift () ! 0) | (df.toucha! 0) & (df.toucha.shift ()0)]. Index.values) # 处理 i,a in enumerate (subs)的序列: # ignore empty or 0 value sequence if len (a)0: continue if df.toucha [ a [0]0: continue df ['set'+ str (i)]0 # initialize a new column with 0 df.loc [ a,'set'+ str (i)] df.toucha.loc [ a ] # and copy values # set the index back df.set index ('Timestamp',inplace True)

使用下面的示例数据

时间戳185837191837197831020518310206383020578302057830300083030068373012837301883106006830601283060188308308000830

它给出:

时间戳1858370191837019783101002051831000205783000206383000205783000205783000003000830003000830030068300300683000
2019-05-17   #2
# 使用一个简单的连续索引 df.reset index (inplace True) # 将索引拆分为 null 值和非 null 值 subs np.split (df.index.values,df [(df.toucha 0) & (df.toucha.shift () ! 0) | (df.toucha! 0) & (df.toucha.shift ()0)]. Index.values) # 处理 i,a in enumerate (subs)的序列: # ignore empty or 0 value sequence if len (a)0: continue if df.toucha [ a [0]0: continue df ['set'+ str (i)]0 # initialize a new column with 0 df.loc [ a,'set'+ str (i)] df.toucha.loc [ a ] # and copy values # set the index back df.set index ('Timestamp',inplace True)

登录后方可回帖

Loading...