【发布时间】:2019-10-08 08:02:06
【问题描述】:
我正在使用包含 5 列和超过 9000 万行的庞大数据集。该代码适用于部分数据,但是当涉及到整个数据时,我得到了内存错误。我阅读了有关生成器的信息,但对我来说似乎非常复杂。我可以根据此代码得到解释吗?
df = pd.read_csv('D:.../test.csv', names=["id_easy","ordinal", "timestamp", "latitude", "longitude"])
df = df[:-1]
df.loc[:,'timestamp'] = pd.to_datetime(df.loc[:,'timestamp'])
pd.set_option('float_format', '{:f}'.format)
df['epoch'] = df.loc[:, 'timestamp'].astype('int64')//1e9
df['day_of_week'] = pd.to_datetime(df['epoch'], unit="s").dt.weekday_name
del df['timestamp']
for day in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']:
day_df = df.loc[df['day_of_week'] == day]
day_df.to_csv(f'{day}.csv', index=False,)
最后一次for loop操作出现错误
样本数据:
d4ace40905729245a5a0bc3fb748d2b3 1 2016-06-01T08:18:46.000Z 22.9484 56.7728
d4ace40905729245a5a0bc3fb748d2b3 2 2016-06-01T08:28:05.000Z 22.9503 56.7748
更新
我这样做了:
chunk_list = []
for chunk in df_chunk:
chunk_list.append(chunk)
df_concat = pd.concat(chunk_list)
我现在不知道如何进行?如何应用其余代码?
【问题讨论】:
-
分块读取文件
-
你能分享你的数据框的可测试片段吗?
-
@RomanPerekhrest 示例数据已添加
-
为什么不分别解析每一行(并将其写入相应的日期)?
-
@Mamed,阻碍的是跳过最后一行
df[:-1]。您是否能够找出文件中的实际行数?你用的是什么操作系统?
标签: python pandas out-of-memory