python - 连续处理 .csv 文件并在特定列包含非空单元格时提取行

标签 python csv

我正在开发一个代码,用于在 for 循环中处理多个 .csv 文件,然后仅提取(到新的 .csv 文件中)与名为“20210-2.0”的特定列中的非空字符串单元格匹配的行。非空字符串单元格的名称相同(即 20210-2.0)。以下是显示 csv 文件部分内容的屏幕截图:

https://uoe-my.sharepoint.com/:i:/g/personal/gpapanas_ed_ac_uk/EayBblFTHmVJvRfsB6h8Vr4B09IfjQ2L1I5OQKUN2p5wzw?e=2gXW61

import pandas as pd
import glob
import os

path = './'

all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:

    df = pd.read_csv(filename, index_col=None)
    li.append(df)
    df = li[li['20201-2.0'].notnull()]

    print('extracting info from cvs...')
    print(df)

    # You can now export all outcomes in new csv files
    file_name = filename + 'new' + '.csv'
    save_path = os.path.abspath(
        os.path.join(
            path, file_name
        )
    )
    print('saving ...')
    export_csv = df.to_csv(save_path, index=None)

我收到以下错误:

df = li[li['20201-2.0'].notnull()]
TypeError: list indices must be integers or slices, not str

最佳答案

在循环内,读取文件后,自动过滤它,然后将其存储在列表中。

df = pd.read_csv(filename, index_col=None, header = 0)    # You read the file in your directory under the variable filename, but it needs to know that you have a column header. Your '20201-2.0' value is a column name right?
df = df[df['20201-2.0'].notnull()]                        # You now get a new dataframe from the one you load, but now you only got the rows in which the column named '20201-2.0' has been populated.
li.append(df)                                             # Store that dataframe in a list called `li`

我还注意到,在保存为新的 csv 文件时,您在每个 filname 中添加了 "new" 字符串和 ".csv" 字符串 你拥有的字符串变量。

你运行过这段代码吗?它不会将您的文件保存为“something.csvnew.csv”吗?

关于python - 连续处理 .csv 文件并在特定列包含非空单元格时提取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58413122/

相关文章:

python - python中有内置的跨线程事件吗?

python - 为什么 Python 中存在这种涉及异步的奇怪语法?

python - 在 Azure API 上托管 Flask(python) API

bash - 如何在 csv 中获取日期并将其从欧洲时间戳转换为 bash 中的美国格式?

python - 加载 CNN 模型并预测 CSV 文件

python - 从 CSV 中删除新行\n 读取

Python Django 防止多对多字段中的重复

python - 如何成为 super 用户在 python 脚本中运行 linux 命令?

java - 无法在csv文件中写入数据

python - 使用 Python 读取 UTF8 CSV 文件