我的日期框架中有很多分数,所以我想放弃其中的一些(理想情况下保持平均值)。
e.g。目前我有
void mergeFront(struct Squeue* squeue){
struct Node* node1 = squeue->first; if (node1 == NULL) return;
struct Node* node2 = node1->next; if (node2 == NULL) return;
char* str1 = node1->val; size_t str1len = strlen(str1);
char* str2 = node2->val; size_t str2len = strlen(str2);
char* merged = malloc(str1len + str2len + 1);
memcpy(merged, str1,str1len + 1);
strcpy(merged+str1len, str2);
node1->val = NULL;
free(node1->val);
node1->val = merged;
node1->next = node2->next;
node2->val = NULL;
free(node2->val);
free(node2);
根据抽样,有没有办法丢弃一些项目?
提供更多详情。我的问题是非常接近的间隔的值的数量,例如1491928756421062和1491928756421187
这样的图表相反,我希望以某种方式获得那些间隔时间的平均值。但也许可以按一秒钟分组......
答案 0 :(得分:0)
我会使用sample()
,但正如你所说,它会随机选择。如果您想根据某些逻辑采样,例如,只保留值为mean *.9 < value < mean * 1.1
的行,您可以尝试以下代码。实际上,这一切都取决于您的抽样策略。
举个例子,可以这样做。
test.csv:
1491928756414930,4643
1491928756419607,166
1491928756419790,120
1491928756419927,142
1491928756420083,121
1491928756420217,109
1491928756420409,52
1491928756420476,105
1491928756420605,35
1491928756420654,120
1491928756420787,105
1491928756420907,93
1491928756421013,37
1491928756421062,112
1491928756421187,41
采样:
df = pd.read_csv("test.csv", ",", header=None)
mean = df[1].mean()
my_sample = df[(mean *.90 < df[1]) & (df[1] < mean * 1.10)]
答案 1 :(得分:0)
您正在寻找resample
df.set_index(pd.to_datetime(df.date)).calltime.resample('s').mean()
这是一个更完整的例子
tidx = pd.date_range('2000-01-01', periods=10000, freq='10ms')
df = pd.DataFrame(dict(calltime=np.random.randint(200, size=len(tidx))), tidx)
fig, axes = plt.subplots(2, figsize=(25, 10))
df.plot(ax=axes[0])
df.resample('s').mean().plot(ax=axes[1])
fig.tight_layout()