【问题标题】:iterating over long list to generate smaller lists and append to csv迭代长列表以生成较小的列表并附加到 csv
【发布时间】:2019-02-10 00:31:38
【问题描述】:

为此苦苦挣扎,想知道是否有人可以提供帮助。 我有一个代码可以生成一个包含 300 个项目的大型列表。 我想使用 pandas 将其写入 csv 文件,但将不同的子列表写入不同的行。 例如 取项目 0-7 并写入一行,然后是 1-8、2-9 等等,直到 293-300。 目前我正在做的是这个并手动更改选择 df.iloc[:,2:9] 但我希望有一种方法可以通过循环自动执行此操作。

到目前为止,这就是我的示例。 sncomo 只是一个生成数据的包。它的输出是我想要拆分并保存到 csv 文件的内容。

import sncosmo
import pandas as pd

days_apart = list(range(55, 300))
model = sncosmo.Model(source="hsiao")
model.set(z=1.5, t0=100)
y = model.bandmag('desr', 'ab', days_apart)
df = pd.DataFrame([y])
df1 = df.iloc[:,2:9]
with open("test_data.csv", "a") as f:
    df1.to_csv(f, header=False)

希望有人能帮忙谢谢!

【问题讨论】:

    标签: python pandas list loops csv


    【解决方案1】:

    我只会使用for 循环和enumerate

    import sncosmo
    import pandas as pd
    
    days_apart = list(range(55, 300))
    model = sncosmo.Model(source="hsiao")
    model.set(z=1.5, t0=100)
    y = model.bandmag('desr', 'ab', days_apart)
    df = pd.DataFrame([y])
    for i, j in enumerate(range(6,300)):
        df1 = df.iloc[:,i:j+1]
        with open("test_data.csv", "a") as f:
            df1.to_csv(f, header=False)
    

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多