迭代长列表以生成较小的列表并附加到 csv

Posted

技术标签:

【中文标题】迭代长列表以生成较小的列表并附加到 csv【英文标题】:iterating over long list to generate smaller lists and append to 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)

希望有人能帮忙谢谢!

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于迭代长列表以生成较小的列表并附加到 csv的主要内容,如果未能解决你的问题,请参考以下文章

添加列并附加数据框

如何使用列表迭代地添加带有删除按钮的标签,可以删除它们

列表生成式生成器迭代器

使用 pandas 根据条件将 csv 值附加到列表

迭代器,生成器,列表解析,装饰器,深浅拷贝

迭代器生成器