【发布时间】:2018-03-22 09:48:10
【问题描述】:
我编写了这段代码,用于计算数据框列中符号更改(从正数变为负数,反之亦然)以来的时间。
df = pd.DataFrame({'x': [1, -4, 5, 1, -2, -4, 1, 3, 2, -4, -5, -5, -6, -1]})
for column in df.columns:
days_since_sign_change = [0]
for k in range(1, len(df[column])):
last_different_sign_index = np.where(np.sign(df[column][:k]) != np.sign(df[column][k]))[0][-1]
days_since_sign_change.append(abs(last_different_sign_index- k))
df[column+ '_days_since_sign_change'] = days_since_sign_change
df[column+ '_days_since_sign_change'][df[column] < 0] = df[column+ '_days_since_sign_change'] *-1
# this final stage allows the "days_since_sign_change" column to also indicate if the sign changed
# from - to positive or from positive to negative.
In [302]:df
Out[302]:
x x_days_since_sign_change
0 1 0
1 -4 -1
2 5 1
3 1 2
4 -2 -1
5 -4 -2
6 1 1
7 3 2
8 2 3
9 -4 -1
10 -5 -2
11 -5 -3
12 -6 -4
13 -1 -5
问题:对于大型数据集(150,000 * 50,000),python 代码非常慢。如何加快速度?
【问题讨论】:
-
你能举一个大型数据集给性能带来麻烦的例子吗?
-
大数据集类似于给定的样本数据,但有数百或百万行。他的问题是如何重新编写代码以更快地运行。
标签: python pandas numpy dataframe