【发布时间】:2020-02-20 19:43:42
【问题描述】:
我对 Python 和数据科学有点陌生。
我有一个包含 2 个日期时间列 A 和 B 的数据集:
A B
0 2019-03-13 08:12:20 2019-03-13 08:12:25
1 2019-03-15 10:02:18 2019-03-13 10:02:20
对于每一行,我想在 A 列和 B 列之间生成以秒为单位的日期范围,因此我应该得到这个:
A
0 2019-03-13 08:12:20
1 2019-03-13 08:12:21
2 2019-03-13 08:12:22
3 2019-03-13 08:12:23
4 2019-03-13 08:12:24
5 2019-03-13 08:12:25
我让它工作了:
import pandas as pd, numpy as np
df=pd.DataFrame({'A': ["2019-03-13 08:12:20", "2019-03-15 10:02:18"], 'B': ["2019-03-13 08:12:25", "2019-03-13 10:02:20"]})
l=[pd.date_range(start=df.iloc[i]['A'], end=df.iloc[i]['B'], freq='S') for i in range(len(df))]
df1=(pd.DataFrame(l).T)[0]
print(df1)
但是因为我有 1M 行,运行时间太长,而且我知道这个解决方案并不是最好的,请你们告诉我最好的方法是什么?
【问题讨论】:
-
df.apply(lambda row : list(pd.date_range(row['A'], end=row['B'], freq='S')), axis=1).explode() -
我有一个大约 1M 行的数据集,我认为 apply 不能胜任 x)
标签: python pandas numpy data-manipulation