首页 > 解决方案 > Python For循环创建数据框

问题描述

嗨,我对 Python 相当陌生,更像是一个 R 人。但我需要使用 python 来完成一项任务。

但是,我遇到了一种情况,我需要按日期将数据子集到不同的 dataFrame 中。“将来不完全是 3,因此想要创建一个循环来执行此操作”我想潜在地创建 3 个数据帧,例如

df_train_30 which contains start day  0 - 30
df_train_60 which contains start day 30 - 60
df_train_90 which contains start day 60 - 90

但不知道如何实现这一目标......请帮助。

下面代码中的想法

today = pd.to_datetime('now')
df_train['START_DATE'] = pd.to_datetime(df_train['START_DATE'])
previous_day_del = 0

for day_del in (30,60,90):
    **'df_train_' + str(day_del)** = df_train[(df_train['START_DATE']>= today - timedelta(days=day_del)) & (df_train['START_DATE']< today - timedelta(days=previous_day_del))]
    previous_day_del = day_del

标签: pythonpandas

解决方案


您可能可以将它存储到字典中 - 它更容易管理而不是动态生成的变量。字典更像是一个具有键值对的对象,其值几乎可以是任何类型,甚至包括数据帧。这是您可以查看的有关 Python 字典的快速指南。

在您的示例中,您可能会继续这样做:

today = pd.to_datetime('now')
df_train['START_DATE'] = pd.to_datetime(df_train['START_DATE'])
previous_day_del = 0
   
# Creating an empty dictionary here called dict_train
dict_train = {}

for day_del in (30,60,90):
    dict_train[day_del] = df_train[(df_train['START_DATE']>= today -timedelta(days=day_del)) & (df_train['START_DATE']< today - timedelta(days=previous_day_del))]
    previous_day_del = day_del

希望这会有所帮助,干杯!:)


推荐阅读