【问题标题】:Store python function outcomes in different csvs?将python函数结果存储在不同的csv中?
【发布时间】:2021-07-05 21:02:08
【问题描述】:

下面的函数目标是为for循环生成的每个表生成一个CSV。不幸的是,每个 CSV 都会覆盖前一个。如何将结果存储在多个不同的 CSV 中?

cur = conn.cursor()
tables = ['users', 'chunks']

for table in tables:
    sql = """SELECT * FROM dwh.""" + table
    cur.execute(sql)

    rows = cur.fetchall()
    rows_df = pd.DataFrame(rows)
    rows_df.to_csv("dwh_users.csv")

【问题讨论】:

  • 你好像知道变量的概念。如果您尝试使用变量而不是 "dwh_users.csv" 会怎样?
  • 不确定我是否完全了解变量的概念!顺便说一句,该函数有效,我可以看到不同的查询结果正确存储在生成的唯一 csv 中(测试很简单,只需反转表中的值 -> 表 = ['users', 'chunks'])。但是,这就是问题所在,我不知道如何生成多个单独的 CSV,每个表中的每个值一个 = ['users', 'chunks']。
  • 那您认为"""SELECT * FROM dwh.""" + table 行在做什么?如果你尝试做rows_df.to_csv("dwh_" + table + ".csv") 怎么办?
  • 完美,有效!谢谢 :) @DeepSpace
  • 为什么,哦,为什么,在这里使用熊猫?

标签: python python-3.x for-loop


【解决方案1】:

你可以这样做:

cur = conn.cursor()
tables = ['users', 'chunks']

for i, table in enumerate(tables):
    sql = """SELECT * FROM dwh.""" + table
    cur.execute(sql)

    rows = cur.fetchall()
    rows_df = pd.DataFrame(rows)
    rows_df.to_csv(f"dwh_users_{i}.csv")

这将根据列表中元素的索引来命名文件...

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2016-05-23
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2014-04-08
    • 2019-08-29
    • 2016-05-27
    • 1970-01-01
    相关资源
    最近更新 更多