【发布时间】:2020-02-12 12:15:12
【问题描述】:
我对数据科学和 Python 有点陌生。
首先,在处理庞大的数据集(100K+ 行)时,您是否建议使用除 pandas 之外的任何其他库?
其次,让我告诉你我目前的问题。
我有一个数据集,其中有一个 Datetime 列,为了便于理解,假设我只有一个名为 date_col 的 Datetime 列。
这是我的 date_col 值的样子:
df=pd.DataFrame({'dt_col': ["2019-03-13 08:12:23", "2019-03-13 07:10:18", "2019-03-13 08:12:23", "2019-03-15 10:35:53", "2019-03-20 11:12:23", "2019-03-20 08:12:23"]})
dt_col
0 2019-03-13 08:12:23
1 2019-03-13 07:10:18
2 2019-03-13 08:12:23
3 2019-03-15 10:35:53
4 2019-03-20 11:12:23
5 2019-03-20 08:12:23
我想提取每天的最小和最大小时数或datetime,例如2019-03-13,我想提取2019-03-13 07:10:18 和2019-03-13 08:12:23。
我很担心:
- 从我的 DataFrame 中获取不带时间的不同日期
- Foreach 这些日期,从我的 Dataframe 中获取最小和最大对应日期
我有点卡在第 2 步,因为我不知道如何在 Python 中真正实现这一点,我的意思是我可以通过一些循环以“旧方式”完成它,但我认为它不会完成这项工作一个大型数据集。
顺便说一句,这是我为第 1 步所做的:
dates=pd.to_datetime(df.dt_col)
distinc_dates=dates.dt.strftime("%Y-%m-%d").unique()
一旦我得到了这些最小值和最大值,我想在每个最小值和最大值日期时间之间生成日期时间行,例如在2019-03-13 07:10:18 和2019-03-13 08:12:23 之间,我想得到2019-03-13 07:10:18、2019-03-13 07:10:19、2019-03-13 07:10:20 ,2019-03-13 07:10:21,2019-03-13 07:10:22,......直到2019-03-13 08:12:23。
我认为这可以使用pd.date_range 来实现。所以一旦我得到了我的最小值和最大值,我想用户使用pd.date_tange 来做这样的事情:
dates=[]
for index,row in df.iterrows():
dates.append(pd.date_range(start=row['min'], end=row['max'], freq='1S'))
print(dates)
但我知道 iterrows asf 很慢,所以我问你们在拥有庞大数据集时实现这一目标的最佳方法。
【问题讨论】:
标签: python pandas dataset data-science