熊猫-如何添加带有索引的行并比较数据的差异?

时间:2019-04-09 07:02:42

标签: python

我已经从excecl(csv)带来了数据,它大约是300000行* 1列,我是用db.plot()绘制的-----这是一个时间序列数据

我正试图删除(删除)高于0.006的数据,之后

我想比较数据之间的差异(逐步:彼此相邻),如果差异大于0.00001,我也想删除该数据。

然后,我将只剩下差异非常小(几乎为0,平坦斜率)的数据。

我是python的初学者,我尽了最大的努力,但是我不知道我的代码有什么问题:

import pandas as pd

excel_df = pd.read_csv('data.csv', header=None)

excel_df.plot()

bool_idx = excel_df < 0.006

valid_data = excel_df[bool_idx]

true_data = valid_data.dropna()

# print(true_data)
# print(valid_data)

ax1 = valid_data.plot()

ax1.set_ylim(-0.005, 0.045)

ax1.plot()

print(true_data)

al2 = true_data.diff()

# print(al2)

number = 0

for true_data in ture data:

    number = number + 1

    if true_data.diff() < 0.00001:

        true_data.drop()

print(true_data)

1 个答案:

答案 0 :(得分:0)

尝试在您的数据集上运行它。

#!/usr/bin/env python3
# coding: utf-8

# In[1]:


import pandas as pd

excel_df = pd.read_csv('data.csv', header=None)

x=excel_df.plot()
# x

bool_idx = excel_df < 0.006
# bool_idx

valid_data = excel_df[bool_idx]
# valid_data

true_data = valid_data.dropna()
# true_data

ax1 = valid_data.plot()

ax1.set_ylim(-0.005, 0.045)
# ax1


al2 = true_data.diff()
# al2

number = 0

for (true_data_diff_val,rid) in zip(true_data.diff()[0],true_data.diff()[0].index):
#     print(number,true_data_diff_val)
#     print(rid)
    if true_data_diff_val < 0.00001 and rid != 0:
        true_data=true_data.drop(int(rid),0)
        print(rid)
print(true_data)

据我所知,您要查询的行/元组ID为w.r.t。循环中的if条件,以便将其从另一个数据帧中删除。我所知道的最简单的方法是使用 zip 函数使其与数据并行进行迭代。

此外,您需要在放置行/列时保存数据框,以观察更改!

我检查了 rid!= 0 ,因为diff()将第一个元素设为NaN,因此您可以应用任何适当的条件。