我有一个datframe,大约有200个功能和3000行。这些数据样本记录在不同的时间,基本上每月一个,如下面“col101”中的示例所示:
0 col1 (id) col2. col3 …. col100 col101 (date) … col2000 (target value)
1 001 653. 675 …. 343.3 01-02-2017. … 1
2 001 673. 432 …. 387.3 01-03-2017. … 0
3 001 679. 528 …. 401.2 01-04-2017. … 1
4 001 685 223 …. 503.4 01-05-2017. … 1
5 002 343 428 …. 432.5 01-02-2017. … 0
6 002 479. 421 …. 455.3 01-03-2017. … 0
7 … … … …. … …. … ..
在这些特征中,有些是累积数据,因此每个月它们的值都会增加。例如,col2和col100是我的数据帧中的累积特性。因此,我想为每个累积特性再添加一列,与前一个月有所不同。所以我想要的数据帧应该是这样的:
0 col1 (id) col2. col2c …. col100 col100c col101 (date) … col2000 (targeva)
1 001 653. 653 …. 343.3 343.3 01-02-2017. … 1
2 001 673. 23 …. 387.3 44 01-03-2017. … 0
3 001 679. 6 …. 401.2 13.9 01-04-2017. … 1
4 001 685 6 …. 503.4 102.2 01-05-2017. … 1
5 002 343 343 …. 432.5 432.5 01-02-2017. … 0
6 002 479. 136 …. 455.3 23.2 01-03-2017. … 0
7 … … … …. … …. … ..
现在,我有两个问题:1)如何自动识别具有200个特征的累积特征?如何为每个累积属性添加额外的特性(例如,col22c和col100c)?有人知道我怎么处理吗?你知道吗
关于区分两列,可以使用内置的
diff()
函数。diff()
计算每个元素与前一个元素的差异。但是请注意,由于第一个元素没有任何前一个元素,diff()
结果中的第一个元素将是NaN
。因此,我们使用内置函数dropna()
删除所有NaN
值。你知道吗但至于检测累积列,我认为没有任何方法。您可以找到所有总是递增(单调)的列,但这并不意味着它们一定是累积的。你知道吗
无论如何,要检测单调列,可以首先获取它们的
diff().dropna()
,然后检查这些值是否都为正值:注意,如果您忘记了
dropna()
,all(col_diff > 0)
的结果总是False
(因为NaN
是一个错误值)相关问题 更多 >
编程相关推荐