在Pandas上工作,我在一个步骤上有性能问题。它在少量数据上工作,但我不能在合理的时间内对较大的数据量有一个答案。
我有这样一个 Dataframe :
ColA ColB ColC start end
1 1 1 2020-01-01 2021-01-01
对于像这样的715K行和您看到的5列,每一行的日期都不同
我想改变dataframe的粒度,使其具有这样的行,因为在intervalls中有日期
大概是这样的
ColA ColB ColC Date
1 1 1 2020-01-01
1 1 1 2020-01-02
[...]
1 1 1 2020-12-31
1 1 1 2021-01-01
由于我估计间隔平均由100个日期组成,因此最后应该有大约7150万行
我试过这个:
df2= p.DataFrame(columns=['ColA','ColB', 'ColC','DATE'])
for index, row in df1.iterrows():
ColA = row['ColA']
ColB = row['ColB']
ColC = row['ColC']
start_date = p.to_datetime(row['start'])
end_date = p.to_datetime(row['end'])
delta = end_date - start_date
for i in range(delta.days + 1):
day = start_date + timedelta(days=i)
new_row = {'ColA': CoLA, 'ColB': ColB, 'ColC':ColC, 'DATE':day}
df2= df2.append(new_row, ignore_index=True)
但是已经运行了几个小时没有结果了:(
你知道我怎样才能做得更好吗?谢谢你的回答
1条答案
按热度按时间kpbwa7wx1#
尝试先创建整个列,然后分解:
输出:
注意由于原始大小和日期范围的原因,您的数据相对较大。这样会快一点,但第一个操作(创建
Date
)仍然会很慢。