【问题标题】:Python: Write list to CSV only if a specific column is not emptyPython:仅当特定列不为空时才将列表写入CSV
【发布时间】:2021-05-04 20:00:30
【问题描述】:

我从 API 获取数据并将其附加到列表 data_list。这有 10,000 多行。

我正在将此 API 输出的每一行写入 CSV,其中包含以下内容:

for row in data_list:
    with open(filename, 'a') as c:
        writer = csv.writer(c)
        writer.writerow(row)
    c.close()

有时会有第 5 列及以后的行为空(即列表中的第 5 项以后为空),而是有''

不必在 Excel 中手动删除它们,我想知道如何才能避免用空列 5 写入行。

额外信息:

普通行:

[123, 'Title', 'Name', 456, 'Surname', 789, 101112, 131415, 161718, 0]

空列的行:

[123, 'Title', 'Name', 456, 'Surname', '']

我尝试查看此Print CSV rows only if particular column is not empty,但它并没有按照我的预期工作。

【问题讨论】:

    标签: python list csv write


    【解决方案1】:

    试试这个:

    for row in data_list:
        with open(filename, 'a') as c:
            writer = csv.writer(c)
            if row[5] != '':
                writer.writerow(row)
        c.close()
    

    【讨论】:

    • 由于某种原因,这会使第 5 列为空,并将其他所有内容向下移动 1 列
    • @corybantic 你能描述一下data_list的结构吗?
    • 是否像 data_list= [[123, '职称', '姓名', 456, '姓氏', 789, 101112, 131415, 161718, 0], [123, '职称', ' Name', 456, 'Surname', ''],[123, 'Title', 'Name', 456, 'Surname', 789, 101112, 131415, 161718, 0]]?
    【解决方案2】:

    这是一个熊猫解决方案:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(data_list)
    df.replace('', np.nan, inplace=True)
    df = df.dropna() # drops rows with an empty value in any column, otherwise use df.dropna(subset=[5])
    df.to_csv("filename.csv", index=False)
    

    【讨论】:

    • 没有熊猫有什么办法吗?
    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多