如何使用循环调整路径名

2024-10-03 11:18:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个程序,它可以分析很多csv文件。 目前,我正在手动声明每一项,但正如您在我的代码中看到的,我实际上只是在路径和变量名中使用+1。 我想我可以用一个循环来简化它,只是不知道如何使用路径名

我的代码:

import pandas as pd
import numpy as np 

### declation ###
df_primes1 = pd.DataFrame()
df_primes1 = np.array(df_primes1)
df_search1 = pd.DataFrame()

df_primes2 = pd.DataFrame()
df_primes2 = np.array(df_primes2)
df_search2 = pd.DataFrame()

df_primes3 = pd.DataFrame()
df_primes3 = np.array(df_primes3)
df_search3 = pd.DataFrame()

searchterm = '322'

### reads csv in numpy array ###
df_primes1 = pd.read_csv('1/1_Primes_32.csv', delimiter=';', header=None, names='1')
df_primes2 = pd.read_csv('1/2_Primes_32.csv', delimiter=';', header=None, names='2')
df_primes3 = pd.read_csv('1/3_Primes_32.csv', delimiter=';', header=None, names='3')

### sorts prime numbers ###
#df_sorted = df_primes1.sort_values(by='n')
#print(df_sorted)


### searches for number with "searchterm" as start value ###
df_search1 = df_primes1[df_primes1['1'].astype(str).str.startswith(searchterm)]['1']
df_search2 = df_primes2[df_primes2['2'].astype(str).str.startswith(searchterm)]['2']
df_search3 = df_primes3[df_primes3['3'].astype(str).str.startswith(searchterm)]['3']


print(df_search1)
print(df_search2)
print(df_search3)

程序正在运行,我只是想知道如何简化它,因为像这样的文件还会有20多个


Tags: csvdataframedfasnparraypdprint
1条回答
网友
1楼 · 发布于 2024-10-03 11:18:18

IIUC,我们可以使用pathlib和dict理解:

from pathlib import Path

p = 'Path/to/your_csv/'

dfs = {
    f"search_{i}": pd.read_csv(file, delimiter=";", 
                                     header=None, 
                                     names=str(i))
    for i, file in enumerate(Path(p).glob("*Prime*.csv"), 1)
}

要分解每个项目

p是保存CSV的目标文件夹

i是一个枚举器,用于循环您的文件。您很可能需要添加一个对CSV排序的预步骤,以获得所需的顺序

file是从生成器对象返回的每个项。我们将每个值转换为一个数据帧

您可以按集合筛选每个数据帧,即

dfs['search_1']

这将返回一个数据帧

相关问题 更多 >