python 如何从不同的子目录中读取多个csv文件并找到具有值的csv文件?[重复]

h4cxqtbf  于 2023-11-16  发布在  Python
关注(0)|答案(3)|浏览(156)

此问题在此处已有答案

Import multiple CSV files into pandas and concatenate into one DataFrame(20个答案)
How do I select rows from a DataFrame based on column values?(17个回答)
21小时前关闭
假设我有一个根目录(文件夹)zi有三个子目录(文件夹)a, b,c
每个a, b,c都包含一个csv文件,这些文件是类似的数据,具有类似的名称a_data, b_data,c_data)
在三个csv文件中,只有一个csv包含 Dataframe 内的整数100的值。``
如何设计一个循环,扫描三个子文件夹中的所有csv,并告诉我哪个csv的值为“100”?
非常感谢!

lskq00tm

lskq00tm1#

我现在还不能描述我的想法,但我认为用Pandas打开每个文件比在Pandas中打开CSV之前先搜索CSV的文本要快。而且,它可能会读得更好。
因此,假设使用Pandas打开所有内容比使用CSV library之类的东西更快,让我们这样做:

import pandas as pd
import numpy as np

df = pd.read_csv("~/z/a/a_data.csv")

if not df["column"].isin([100]).all():
  df = pd.read_csv("~/z/b/b_data.csv")

  if not df["column"].isin([100]).all():
    df = pd.read_csv("~/z/c/c_data.csv")

    if not df["column"].isin([100]).all():
      print("No value")

字符串
最终,嵌套的if并不漂亮。但是,如果没有看到你的代码,很难找到合适的。如果你能发布你的代码,那会有所帮助。否则,希望上面的内容能帮助你开始。

8cdiaqws

8cdiaqws2#

import glob
import pandas as pd
val = 100
subdir_files = glob.glob(folder_path  + '/**/*.csv', recursive=True)
for file in subdir_files:
    df = pd.read_csv(file)
    if val in df['column_name'].values:
        print(file)
        break

字符串

mnemlml8

mnemlml83#

你可以像这样遍历csv_files列表,阅读读取每一个使用pandas.read_csv并找到第一个具有所需值的列表。如果循环正常结束(即不在break上),对应于没有包含所需值的文件,则for循环的else子句将被执行。

import pandas as pd
csv_files = ["a/a.csv", "b/b.csv", "c/c.csv"]
found_df = None
for csv_file in csv_files:
    df = pd.read_csv(csv_file)
    if 100 in df["column"].values:
        found_df = df
        break
else:
    print("No value found")

字符串

相关问题