Pandas:如何获取目录中每个文件行数的数据框?

18 浏览
0 Comments

Pandas:如何获取目录中每个文件行数的数据框?

我在目录中有一些.csv文件(abc.csv,def.csv等),我想要计算每个文件中的行数,并保存一个包含名称列和计数列的单个文件。我期望的输出如下:\n

df = name  count
     abc   ....
     def   ....
     ghi   ....

\n我正在尝试以下方法来计算行数,但无法将其转换为数据框。请给予建议。\n

import os
path = '/some/path/to/file'
for filename in os.listdir(path):
with open(filename, 'r', encoding="latin-1") as fileObj:
    # -1 to exclude the header
    print("在csv文件{}中计算出的行数为:{}".format(filename, len(fileObj.readlines()) - 1))

0
0 Comments

使用pandas和pathlib库

from pathlib import Path
import pandas as pd
path_to_csv = 'your\\dir'
file_info = pd.DataFrame( {file.name : 
      pd.read_csv(file).shape for file in Path(path_to_csv).glob('*.csv')})\
      .T.rename(columns={0 : 'rows', 1 : 'columns'})
print(file_info)
              rows  columns
01_02_20.csv     3        3
01_28_20.csv     3        4
12_02_19.csv    77       10
12_09_19.csv    86        7

问题的出现原因:

需要统计目录中每个文件的行数,以便进行后续的数据处理和分析。

解决方法:

1. 导入pandas和pathlib库。

2. 设置待处理文件的目录路径。

3. 使用pathlib库中的glob()方法获取目录中所有的csv文件。

4. 使用列表生成式和字典生成式,遍历所有的csv文件,读取每个文件并计算文件的行数和列数,将结果存储在字典中。

5. 将字典转换为DataFrame,行表示文件名,列表示行数和列数。

6. 使用rename()方法将列名0和1分别改为'rows'和'columns'。

7. 打印输出DataFrame,显示每个文件的行数和列数。

0
0 Comments

问题的出现原因是需要统计目录中每个文件的行数,并将结果存储在一个DataFrame中。解决方法是使用Pandas库和Python的os模块来实现。

首先,需要导入所需的库和模块。Pandas库用于创建和操作数据框,os模块用于获取文件名和路径。

然后,定义一个变量path,表示目录的路径。

接下来,创建两个空列表names和counts,用于存储文件名和对应的行数。

使用os.listdir()函数获取目录中的所有文件名,并通过一个循环遍历每个文件。

在循环中,使用open()函数打开文件,并指定读取模式和编码方式。然后使用readlines()方法读取文件的所有行,并使用len()函数计算行数。由于要排除文件的标题行,需要将行数减去1。

将文件名和行数分别添加到names和counts列表中。

循环结束后,使用pd.DataFrame()函数创建一个数据框。将names和counts作为字典传递给该函数,字典的键分别对应数据框的列名。

最后,将结果存储在df数据框中。

需要注意的是,如果文件非常大,可以考虑使用其他方法来计算行数,因为readlines()方法返回的是一个包含所有行的列表。

这是解决问题的完整代码和步骤。通过这种方法,可以获取目录中每个文件的行数,并将其存储在一个方便的数据框中。

0