连接使用循环生成的 pandas DataFrame

新手上路,请多包涵

我正在创建一个名为 data_day 的新 DataFrame,其中包含新功能,用于从前一个 DataFrame df 的日期时间戳推断的每一天。

我的新数据帧 data_day 是 30 个独立的数据帧,我需要在最后连接/附加到一个 unic 数据帧 (final_data_day) 中。

每天的 for 循环定义如下:

 num_days=len(list_day)

#list_day= random.sample(list_day,num_days_to_simulate)
data_frame = pd.DataFrame()

for i, day in enumerate(list_day):

    print('*** ',day,' ***')

    data_day=df[df.day==day]
    .....................
    final_data_day = pd.concat()

希望我很清楚。我的基本上是一个在非平凡的 for 循环中生成的数据帧的追加/连接问题

原文由 Annalix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 747
2 个回答

Pandas concat 采用数据帧列表。如果您可以使用循环函数生成数据帧列表,完成后您可以将列表连接在一起:

 data_day_list = []
for i, day in enumerate(list_day):
    data_day = df[df.day==day]
    data_day_list.append(data_day)
final_data_day = pd.concat(data_day_list)

原文由 David Rinck 发布,翻译遵循 CC BY-SA 4.0 许可协议

耗尽生成器比附加到列表更优雅(如果不是更高效的话)。例如:

 def yielder(df, list_day):
    for i, day in enumerate(list_day):
        yield df[df['day'] == day]

final_data_day = pd.concat(list(yielder(df, list_day))

原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题