Python遍历csv列表并检查值?

问题描述 投票:2回答:3

我有五个.csv,它们具有按相同顺序处理的相同字段,需要这样处理:

  • 获取文件列表
  • 将每个文件放入数据框
  • [检查一列字母数字组合是否具有特定值(每个文件不同),例如:检查文件名PT333的数字column1是否在data1中:
column1   column2    column3    
PT389     LA       image.jpg
PT372     NY       image2.jpg
  • 如果该列具有特定值,则打印该列具有哪个值以及我已分配给该文件的文件名/变量名称,然后将该数据帧重命名为output1

我尝试执行此操作,但是我不知道如何使其循环并为每个文件执行相同的操作。目前,它返回数字,但是我也希望它返回数据帧名称,并且我还希望它循环遍历所有文件(a到e)以检查numbers列表中的所有值。] >

这是我所拥有的:

import os
import glob
import pandas as pd
from glob import glob
from os.path import expanduser

home = expanduser("~")
os.chdir(home + f'/files/')

data = glob.glob('data*.csv')
data

# If you have tips on how to loop through these rather than 
# have a line for each one, open to feedback
a = pd.read_csv(data[0], encoding='ISO-8859-1', error_bad_lines=False)
b = pd.read_csv(data[1], encoding='ISO-8859-1', error_bad_lines=False)
c = pd.read_csv(data[2], encoding='ISO-8859-1', error_bad_lines=False)
d = pd.read_csv(data[3], encoding='ISO-8859-1', error_bad_lines=False)
e = pd.read_csv(data[4], encoding='ISO-8859-1', error_bad_lines=False)
filenames = [a,b,c,d,e]
filelist= ['a','b','c','d','e']

# I am aware that this part is repetitive. Unsure how to fix this,
# I keep getting errors
# Any help appreciated
numbers = ['PT333', 'PT121', 'PT111', 'PT211', 'PT222']
def type():
    for i in a.column1:
        if i == numbers[0]:
            print(numbers[0])
        elif i == numbers[1]:
            print(numbers[1])
        elif i == numbers[2]:
            print(numbers[2])
        elif i == numbers[3]:
            print(numbers[3])
        elif i == numbers[4]:
            print(numbers[4])
type()

[也很乐意就如何减少重复的代码并使事情变得更顺畅进行建设性的批评。 TIA

我有五个.csv,它们具有需要按相同顺序处理的相同字段:获取文件列表将每个文件放入数据帧中检查是否有字母数字组合的列...

python loops
3个回答
0
投票

我建议更改类型函数,并稍有不同地调用它


0
投票

[也乐于接受关于如何减少重复的建设性批评代码并使事情变得更顺畅。


0
投票

尝试一下

© www.soinside.com 2019 - 2024. All rights reserved.